2012-04-03 32 views
1

有被认为是这两个字符串为什么这不会抛出一个SyntaxError而不是默默解释它错误?

foo = ['dumb' 
'error'] 

但是,如果你忘了逗号,它只是合并的字符串连接在一起,而不是产生一个语法错误之间的逗号。你的结果将是

['dumberror'] 

我花了几个小时跟踪这个。为什么Python解释器合并这些字符串?

+0

这是语言的[记录的行为(http://docs.python.org/reference/lexical_analysis.html#string-literal-concatenation)。至于为什么它是该语言的记录行为,请问Guido。 – kindall 2012-04-03 20:37:22

+0

什么python版本? – PenguinCoder 2012-04-03 20:37:33

回答

6

这是一个文档化的功能,允许在源代码中使用字符串文字进行更好的格式化。

允许多个相邻的字符串或字节文字(用空格分隔),可能使用不同的引用约定,它们的含义与它们的连接相同。因此,“你好”“世界”等同于“helloworld”。此功能可用于减少所需的反斜杠数量,可以方便地将长字符串分隔成很长的一行,甚至可以向部分字符串添加注释。

Source

这也是值得记住这样一个字条:

注意,这个功能是在语法级别定义,但是在编译时实施。在运行时,必须使用'+'运算符连接字符串表达式。还要注意,文字连接可以为每个组件使用不同的引用样式(即使混合原始字符串和三重引用字符串)。

+2

嗯,我肯定是从错误的方向来到这个功能:) – Nathan 2012-04-03 20:41:12

相关问题