2012-04-03 31 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

相關問題