来自python Wiki
多元元组 在Python中,多元元组看起来像: 1,2,3 … 但是,再次定义元组的是逗号而不是括号。
多元元组
在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)
更严重的是,我不明白为什么不选择括号而不是逗号?
因为我认为在以下情况下会产生悖论:
>>> 1, # is a valid tuple # (1,) >>> tuple([1]) # Or this # (1,) >>> tuple(1) # But not this one # TypeError: 'int' object is not iterable
但是,如果您认为圆括号 总是 负责实例化a tuple,那么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)
我知道这是一个众所周知的功能,如果已经重复了,我已经很抱歉。我发现了很多有关元组如何工作的类似主题,但是都没有详细解释为什么如此创建此功能。
我也知道,可以基于观点关闭该主题,但是我对 技术原因 (如果有)或至少是 历史原因 非常感兴趣。
谢谢
这是语法的产物。
用逗号分隔的术语是元组,列表和集合的构建块,具体取决于它们是否被方括号,花括号或根本不包裹。
指定语法时的主要挑战是平衡相同字符的多种竞争使用。逗号分隔列表,元组,字典和集合的各个部分。逗号还在函数调用中分隔参数。两种用法都允许使用尾部逗号(长度为一的元组是必需的)。同样,括号有多种用途,包括函数调用和算术表达式分组。该句点用作小数点,并用作getattribute运算符。