2024-04-20 14:33:30 发布
网友
我很好奇为什么在Python中,列表中的尾随逗号是有效的语法,而Python似乎只是忽略了它:
>>> ['a','b',] ['a', 'b']
当它的元组因为('a')和('a',)是两个不同的东西而在列表中时,这是有意义的吗?
('a')
('a',)
它的主要优点是使多行列表更易于编辑,并且减少了diff中的混乱。
更改:
s = ['manny', 'mo', 'jack', ]
致:
s = ['manny', 'mo', 'jack', 'roger', ]
只涉及一行的差异:
s = ['manny', 'mo', 'jack', + 'roger', ]
当省略尾随逗号时,这比更混乱的多行diff要好:
s = ['manny', 'mo', - 'jack' + 'jack', + 'roger' ]
后一个差异使得只添加了一行而另一行没有更改内容变得更加困难。
它还降低了这样做的风险:
s = ['manny', 'mo', 'jack' 'roger' # Added this line, but forgot to add a comma on the previous line ]
触发implicit string literal concatenation,产生s = ['manny', 'mo', 'jackroger'],而不是预期的结果。
s = ['manny', 'mo', 'jackroger']
它有助于消除某种错误。有时在多行上写列表会更清楚。 但是在以后的维护中,您可能需要重新排列项目。
l1 = [ 1, 2, 3, 4, 5 ] # Now you want to rearrange l1 = [ 1, 2, 3, 5 4, ] # Now you have an error
但是,如果允许尾随逗号并使用它们,则可以轻松地重新排列行而不会引入错误。
在数组中允许尾随逗号是一种常见的语法约定,像C和Java这样的语言允许尾随逗号,Python的列表数据结构似乎已经采用了这种约定。当生成用于填充列表的代码时,它特别有用:只需生成元素和逗号的序列,不需要将最后一个视为结尾不应该有逗号的特殊情况。
它的主要优点是使多行列表更易于编辑,并且减少了diff中的混乱。
更改:
致:
只涉及一行的差异:
当省略尾随逗号时,这比更混乱的多行diff要好:
后一个差异使得只添加了一行而另一行没有更改内容变得更加困难。
它还降低了这样做的风险:
触发implicit string literal concatenation,产生
s = ['manny', 'mo', 'jackroger']
,而不是预期的结果。它有助于消除某种错误。有时在多行上写列表会更清楚。 但是在以后的维护中,您可能需要重新排列项目。
但是,如果允许尾随逗号并使用它们,则可以轻松地重新排列行而不会引入错误。
在数组中允许尾随逗号是一种常见的语法约定,像C和Java这样的语言允许尾随逗号,Python的列表数据结构似乎已经采用了这种约定。当生成用于填充列表的代码时,它特别有用:只需生成元素和逗号的序列,不需要将最后一个视为结尾不应该有逗号的特殊情况。
相关问题 更多 >
编程相关推荐