为什么Python将一个项目作为整数处理?

use*_*392 8 python tuples

请参阅以下示例:

(1) #outputs 1
Run Code Online (Sandbox Code Playgroud)

但是如果我添加逗号,根据Python文档:)它是正确的:)

(1,) #output (1,)
Run Code Online (Sandbox Code Playgroud)

这对我来说太奇怪了.有谁能解释一下?

一个相关的问题:Python是否有办法知道何时(1)应该是元组(1,而不是1)?

感谢您将来的回复.

Tim*_*ker 18

实际上,它是创建元组的逗号; 只有在存在歧义的情况下才需要括号.毕竟,括号也可以用于分组:

>>> 1, 2
(1, 2)
>>> 1,
(1,)
>>> (1)
1
>>> 2 * 3, 4
(6, 4)
>>> 2 * (3, 4)
(3, 4, 3, 4)
>>> 1, + (2, 3) * 4
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: bad operand type for unary +: 'tuple'
>>> (1,) + (2, 3) * 4
(1, 2, 3, 2, 3, 2, 3, 2, 3)
Run Code Online (Sandbox Code Playgroud)