如果忘记字符串列表中的逗号,Python(2.7)将自动连接两个字符串。例如:
x = ['id', 'date' 'time']
print(x)
#[id, 'datetime']
这种行为似乎与绝大多数"用例"相反。用户只是忘记了逗号。这导致错过代码中的错误或获得奇怪的错误消息。例如,在上面的示例中,这是一个对象的属性列表,并抛出AttributeError: 'YourObjectClass' object has no attribute 'datetime'
。这是一个功能还是一个错误,如果它是一个功能,为什么它是一个功能?
答案 0 :(得分:2)
这是一个功能,其基本原理在the part of the spec that describes it:
中给出允许使用多个相邻的字符串文字(由空格分隔),可能使用不同的引用约定,并且它们的含义与它们的连接相同。因此,
"hello" 'world'
相当于"helloworld"
。此功能可用于减少所需的反斜杠数,在长行中方便地拆分长字符串,甚至可以为字符串的某些部分添加注释,例如:re.compile("[A-Za-z_]" # letter or underscore "[A-Za-z0-9_]*" # letter, digit or underscore )
答案 1 :(得分:1)
这是一个名为字符串文字串联的功能。
字符串文字串联
可能是多个相邻的字符串文字(由空格分隔) 允许使用不同的引用约定,其含义是 与他们的串联相同。因此,
"hello"
'world'
是等效的 到"helloworld"
。此功能可用于减少数量 需要反斜杠,以便在长条中方便地分割长字符串 行,甚至为部分字符串添加注释:
re.compile("[A-Za-z_]" # letter or underscore
"[A-Za-z0-9_]*" # letter, digit or underscore
)
此功能在语法级别定义,但在编译时实现。