[英]Python list syntax explanation
我注意到,当我使用python时,我偶尔会出现一个打字错误并且有一个看起来类似的定义
L = [1,2,3,]
我的问题是,为什么这不会导致错误?
它不会导致错误,因为它是一个故意的功能,允许列表和元组使用尾随逗号。
这对于元组尤其重要,否则很难定义单个元素元组:
>>> (100,) # this is a tuple because of the trailing comma
(100,)
>>> (100) # this is just the value 100
100
它还可以更容易地重新排序或添加元素到长列表。
从Python文档:
尾随逗号只需要创建一个元组(也就是单个元素); 在所有其他情况下它是可选的。 没有尾随逗号的单个表达式不会创建元组,而是生成该表达式的值。 (要创建一个空元组,请使用一对空括号:()。)
我的问题是,为什么这不会导致错误?
尾随逗号被忽略,因为它很方便:
funcs = [ run,
jump,
# laugh
]
您可以在官方文档中阅读更多信息:
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"
。 始终添加逗号可避免此错误来源。
允许尾随逗号也可以使编程代码生成更容易。
做这个
>>> l = 1,2,3,
>>> l
(1, 2, 3)
()
是可选的。 的,
意味着你正在创建一个序列。
观察这一点
>>> l = 1,
>>> l
(1,)
>>> l = 1
>>> l
1
再次。 的,
意味着它是一个序列。 ()
是可选的。
想到并没有错
[ 1, 2, 3, ]
作为列表构造函数[ ]
内的元组1, 2, 3,
。 从基础元组创建列表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.