谁能解释为什么在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