gpt4 book ai didi

python - 为什么 python 在元组设计中选择逗号而不是括号?

转载 作者:太空宇宙 更新时间:2023-11-03 12:26:43 25 4
gpt4 key购买 nike

来自 python wiki

Multiple Element Tuples

In Python, multiple-element tuples look like:

1,2,3

...

but again, it is the commas, not the parentheses, that define the tuple.

哦,真的吗?!

那么为什么:

>>> 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

但是,如果您认为括号总是负责实例化一个元组,那么实例化多个项目的元组的所有问题都走了。

例如在我想象的世界里:

>>> (1, 2, 3) # stay valid
# (1, 2, 3)
>>> (1) # is newly valid
# (1)
>>> () # stay valid
# ()
>>> 1,
# TypeError: int() takes exactly 1 argument (2 given)

我知道这是一个众所周知的功能,如果重复,我已经很抱歉了。我发现了很多关于元组如何工作的类似主题,但没有一个详细解释为什么要这样创建此功能。

我也知道这个主题可能会因为基于意见而被关闭,但我最感兴趣的是技术原因(如果有的话),或者至少是历史原因 .

谢谢

最佳答案

这是 grammar 的产物.

用逗号分隔的术语是元组、列表和集合的构建 block ,具体取决于它们是被方括号、大括号包裹还是什么都不包裹。

指定语法时的主要挑战是平衡相同字符的多种竞争使用。逗号分隔列表、元组、字典和集合的各个部分。逗号还在函数调用中分隔参数。尾随逗号允许用于这两种用途(并且对于长度为一的元组是必需的)。同样,圆括号有多种用途,包括函数调用和算术表达式的分组。句点用作小数点并用于 getattribute 运算符。

关于python - 为什么 python 在元组设计中选择逗号而不是括号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44914077/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com