我注意到当我使用python时,我偶尔会出现一个打字错误并且有一个类似于
的定义L = [1,2,3,]
我的问题是,为什么这不会导致错误?
答案 0 :(得分:8)
它不会导致错误,因为它是一个故意的功能,允许列表和元组使用尾随逗号。
这对于元组尤其重要,否则很难定义单个元素元组:
>>> (100,) # this is a tuple because of the trailing comma
(100,)
>>> (100) # this is just the value 100
100
它还可以更容易地重新排序或添加元素到长列表。
答案 1 :(得分:4)
来自Python文档:
只需要创建一个元组(a.k.a.一个单例),就需要尾随逗号;在所有其他情况下它是可选的。没有尾随逗号的单个表达式不会创建元组,而是生成该表达式的值。 (要创建一个空元组,请使用一对空括号:()。)
答案 2 :(得分:4)
我的问题是,为什么这不会导致错误?
尾随逗号被忽略,因为它很方便:
funcs = [ run,
jump,
# laugh
]
答案 3 :(得分:3)
您可以在官方文档中了解更多信息:
Why does Python allow commas at the end of lists and tuples?
Python允许您在列表,元组和词典末尾添加一个尾随逗号:
[1, 2, 3,]
('a', 'b', 'c',)
d = {
"A": [1, 5],
"B": [6, 7], # last trailing comma is optional but good style
}
有几个理由允许这样做。
如果列表,元组或字典的文字值分布在多行中,则更容易添加更多元素,因为您不必记住在上一行中添加逗号。这些行也可以在编辑器中排序,而不会产生语法错误。
意外省略逗号可能会导致难以诊断的错误。例如:
x = [
"fee",
"fie"
"foo",
"fum"
]
此列表看起来有四个元素,但它实际上包含三个元素:"fee"
,"fiefoo"
和"fum"
。始终添加逗号可以避免此错误来源。
允许尾随逗号也可以使程序代码生成更容易。
答案 4 :(得分:1)
这样做
>>> l = 1,2,3,
>>> l
(1, 2, 3)
()
是可选的。 ,
表示您正在创建序列。
观察此
>>> l = 1,
>>> l
(1,)
>>> l = 1
>>> l
1
再次。 ,
表示它是一个序列。 ()
是可选的。
想到
并没有错[ 1, 2, 3, ]
作为列表构造函数1, 2, 3,
中的元组[ ]
。从基础元组创建列表。