有被認爲是這兩個字符串爲什麼這不會拋出一個SyntaxError而不是默默解釋它錯誤?
foo = ['dumb'
'error']
但是,如果你忘了逗號,它只是合併的字符串連接在一起,而不是產生一個語法錯誤之間的逗號。你的結果將是
['dumberror']
我花了幾個小時跟蹤這個。爲什麼Python解釋器合併這些字符串?
有被認爲是這兩個字符串爲什麼這不會拋出一個SyntaxError而不是默默解釋它錯誤?
foo = ['dumb'
'error']
但是,如果你忘了逗號,它只是合併的字符串連接在一起,而不是產生一個語法錯誤之間的逗號。你的結果將是
['dumberror']
我花了幾個小時跟蹤這個。爲什麼Python解釋器合併這些字符串?
這是一個文檔化的功能,允許在源代碼中使用字符串文字進行更好的格式化。
允許多個相鄰的字符串或字節文字(用空格分隔),可能使用不同的引用約定,它們的含義與它們的連接相同。因此,「你好」「世界」等同於「helloworld」。此功能可用於減少所需的反斜槓數量,可以方便地將長字符串分隔成很長的一行,甚至可以向部分字符串添加註釋。
這也是值得記住這樣一個字條:
注意,這個功能是在語法級別定義,但是在編譯時實施。在運行時,必須使用'+'運算符連接字符串表達式。還要注意,文字連接可以爲每個組件使用不同的引用樣式(即使混合原始字符串和三重引用字符串)。
嗯,我肯定是從錯誤的方向來到這個功能:) – Nathan 2012-04-03 20:41:12
這不是一個錯誤,它是一個功能! Python被記錄爲連接字符串,只有空白字符。
http://docs.python.org/release/2.5.2/ref/string-catenation.html
這是語言的[記錄的行爲(http://docs.python.org/reference/lexical_analysis.html#string-literal-concatenation)。至於爲什麼它是該語言的記錄行爲,請問Guido。 – kindall 2012-04-03 20:37:22
什麼python版本? – PenguinCoder 2012-04-03 20:37:33