Kru*_*pös 3 python syntax tuples language-design language-lawyer
多元素元组
在Python中,多元素元组看起来像:
1,2,3...
但同样,定义元组的是逗号,而不是括号.
真的吗?!
那么为什么:
>>> tuple((((((1, 2, 3)))))) # creates a valid tuple
# (1, 2, 3)
>>> tuple(1, 2, 3, ) # But not here
# TypeError: tuple() takes at most 1 argument (3 given)
Run Code Online (Sandbox Code Playgroud)
更严重的是,我不明白为什么没有选择括号中的括号?
因为我认为它会在以下情况下产生悖论:
>>> 1, # is a valid tuple
# (1,)
>>> tuple([1]) # Or this
# (1,)
>>> tuple(1) # But not this one
# TypeError: 'int' object is not iterable
Run Code Online (Sandbox Code Playgroud)
但是,如果您认为括号始终负责实例化a tuple,那么实例化tuple多个项目的所有问题 都将消失.
例如在我想象中的世界:
>>> (1, 2, 3) # stay valid
# (1, 2, 3)
>>> (1) # is newly valid
# (1)
>>> () # stay valid
# ()
>>> 1,
# TypeError: int() takes exactly 1 argument (2 given)
Run Code Online (Sandbox Code Playgroud)
我知道这是一个众所周知的功能,如果它重复,我已经很抱歉了.我发现了许多关于元组如何工作的类似主题,但没有详细解释为什么这个特性是这样创建的.
我也知道这个主题可以作为基于意见而被关闭,但我最感兴趣的是技术原因(如果有的话),或者至少是历史原因.
谢谢