为什么Python自动组合两个单独的字符串?

时间:2015-06-18 18:44:41

标签: python string

如果忘记字符串列表中的逗号,Python(2.7)将自动连接两个字符串。例如:

x = ['id', 'date' 'time']
print(x)
#[id, 'datetime']

这种行为似乎与绝大多数"用例"相反。用户只是忘记了逗号。这导致错过代码中的错误或获得奇怪的错误消息。例如,在上面的示例中,这是一个对象的属性列表,并抛出AttributeError: 'YourObjectClass' object has no attribute 'datetime'。这是一个功能还是一个错误,如果它是一个功能,为什么它是一个功能?

2 个答案:

答案 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
          )

此功能在语法级别定义,但在编译时实现。