为什么在变量名后添加一个尾随逗号使其成为一个元组?

Ava*_*esh 29 python syntax tuples

我想知道为什么在变量名后添加一个尾随逗号(在这种情况下是一个字符串)使它成为一个tuple.即

>>> abc = 'mystring',
>>> print(abc)
('mystring',)
Run Code Online (Sandbox Code Playgroud)

当我打印abc它返回tuple ('mystring',).

Ben*_*mes 35

这是重要的逗号,而不是括号.Python教程说:

元组由许多以逗号分隔的值组成

括号用于在使用逗号的其他地方消除歧义,例如,使您能够嵌套或输入元组作为参数列表的一部分.

请参阅有关元组和序列Python教程部分


Phi*_*ipp 7

因为这是用一个元素编写元组文字的唯一方法.对于列表文字,必要的括号使语法唯一,但由于parantheses也可以表示分组,括在括号中的表达式不会将其转换为元组:您需要一个不同的语法元素,在本例中为逗号.


Man*_*dan 5

更新

请参阅上文以获得更好的答案.

原始答案

在python中,元组用括号表示.

括号不表示元组.任何表达式都可以括在括号中,这对于元组来说并不是特别的.事实上,几乎总是需要使用括号,因为否则它将是模糊的,这就是元组上的__str____repr__方法将显示它们的原因.

我的立场得到了纠正(我今天一直都在做.叹气).

例如:

abc = ('my', 'string')
Run Code Online (Sandbox Code Playgroud)

单元素元组怎么样?括号表示法仍然有效.

abc = ('mystring',)
Run Code Online (Sandbox Code Playgroud)

对于所有元组,可以省略括号,但需要保留逗号.

abc = 'mystring', # ('mystring',)
Run Code Online (Sandbox Code Playgroud)

要么

abc = 'my', 'string', # ('my', 'string',)
Run Code Online (Sandbox Code Playgroud)

所以实际上正在做的是创建单个元素元组而不是字符串.

文件明确表示:

包含至少一个逗号的表达式列表产生一个元组.元组的长度是列表中表达式的数量.表达式从左到右进行评估.