Bur*_*lid 123 python syntax list comma trailing
我很好奇为什么在Python中列表中的尾随逗号是有效的语法,而且似乎Python只是忽略它:
>>> ['a','b',]
['a', 'b']
Run Code Online (Sandbox Code Playgroud)
这是有道理的,当因为它的元组('a')和('a',)是两个不同的东西,但在名单?
Ray*_*ger 193
主要优点是它使多行列表更容易编辑,并减少差异的混乱.
更改:
s = ['manny',
'mo',
'jack',
]
Run Code Online (Sandbox Code Playgroud)
至:
s = ['manny',
'mo',
'jack',
'roger',
]
Run Code Online (Sandbox Code Playgroud)
差异只涉及差异的一行变化:
s = ['manny',
'mo',
'jack',
+ 'roger',
]
Run Code Online (Sandbox Code Playgroud)
当省略尾随逗号时,这打败了更令人困惑的多行差异:
s = ['manny',
'mo',
- 'jack'
+ 'jack',
+ 'roger'
]
Run Code Online (Sandbox Code Playgroud)
后一种差异使得更难以看到只添加了一行而另一行没有改变内容.
它还降低了这样做的风险:
s = ['manny',
'mo',
'jack'
'roger' # Added this line, but forgot to add a comma on the previous line
]
Run Code Online (Sandbox Code Playgroud)
并触发隐式字符串文字串联,s = ['manny', 'mo', 'jackroger']而不是预期的结果.
Ósc*_*pez 32
这是一种常见的语法约定,允许在数组中使用尾随逗号,C和Java等语言允许它,并且Python似乎已将此约定用于其列表数据结构.在生成用于填充列表的代码时,它特别有用:只需生成一系列元素和逗号,不需要将最后一个视为特殊情况,最后不应该使用逗号.
Kei*_*ith 26
它有助于消除某种错误.在多行上写清单有时更清楚.但是,在以后的维护中,您可能需要重新排列项目.
l1 = [
1,
2,
3,
4,
5
]
# Now you want to rearrange
l1 = [
1,
2,
3,
5
4,
]
# Now you have an error
Run Code Online (Sandbox Code Playgroud)
但是如果允许使用尾随逗号并使用它们,则可以轻松地重新排列行而不会引入错误.