为什么在Python中将单个元素元组解释为该元素?

谁能解释为什么在Python中将单个元素元组解释为该元素?

他们为什么不只将元组(1,)打印为(1)?

请参阅以下示例:

>>> (1)
1
>>> ((((1))))
1
>>> print(1,)
1
>>> print((1,))
(1,)

解决方法:

单个元素元组永远不会被视为包含的元素.括号对分组最有用,而不是对元组的创建.逗号会这样做.

Why don’t they just print (1,) as (1)?

可能是因为打印内置容器类型提供了一种表示形式,可用于通过来重新创建容器对象,例如eval:

__repr__的文档在此方面提供了一些清晰度:

If at all possible, this should look like a valid Python expression
that could be used to recreate an object with the same value

在回答您的问题时,(1)只是带有分组括号的整数1.为了通过其表示重新创建单例元组,必须将其打印为(1,),这是用于创建元组的有效语法.

>>> t = '(1,)'
>>> i = '(1)'
>>> eval(t)
(1,) # tuple
>>> eval(i)
1    # int
上一篇:python元组排序列表


下一篇:使用数组作为元组成员:有效的C 11元组声明?