为什么Python允许列表中的尾随逗号?

我很好奇为什么在Python中,列表中尾随的逗号是有效的语法,似乎Python简单地忽略它:

>>> ['a','b',] ['a', 'b'] 

('a')('a',)的元组是两个不同的东西,但是在列表中是有意义的。

主要优点是它使多行列表更容易编辑,并减less了差异的混乱。

更改:

 s = ['manny', 'mo', 'jack', ] 

至:

 s = ['manny', 'mo', 'jack', 'roger', ] 

在差异中只涉及一个单行的变化:

  s = ['manny', 'mo', 'jack', + 'roger', ] 

当尾随的逗号被省略时,这比较令人困惑的多行比较:

  s = ['manny', 'mo', - 'jack' + 'jack', + 'roger' ] 

后面的diff使得难以看到只有一行被添加,而另一行没有改变内容。

允许在数组中使用尾随逗号是一种常见的语法规则,像C和Java这样的语言允许它,而且Python似乎已经采用了这个约定来处理它的列表数据结构。 生成填充列表的代码时特别有用:只需生成一系列元素和逗号,而不需要将最后一个视为最后没有逗号的特殊情况。

它有助于消除某种types的错误。 在多行上写清单有时更清晰。 但是,在稍后的维护中,您可能需要重新排列项目。

 l1 = [ 1, 2, 3, 4, 5 ] # Now you want to rearrange l1 = [ 1, 2, 3, 5 4, ] # Now you have an error 

但是,如果允许尾随逗号,并使用它们,则可以轻松地重新排列行,而不会引入错误。

一个元组是不同的,因为('a')是用隐式延拓和()作为优先运算符来扩展的,而('a',)是指长度为1的元组。

你最初的例子是tuple('a')