的差異對於我的其中一個站點,我需要檢查是否定義了幾個類屬性而不是空的。到目前爲止,我很高興地使用if self.attr:
,這在我看來是if self.attr is not None and self.attr is not '':
的縮寫,或者是屬性的未定義值。字符串和運算符:最佳實踐,與+
這工作正常,但在檢查多個字符串屬性時產生令人驚訝的行爲。 '' and ''
不是False
(如我所料),但''
。
這引出了一個問題:and
操作員是否還有其他類型的操作員不強制將類型轉換爲bool
? 我不能拿出一個例子,這種行爲上的差異會導致if
條款的實際不同結果(畢竟,''
仍然評估爲False
),但我們仍然覺得有邊緣案例可能成爲一個陷阱。
最後,我很想知道是否有人知道它爲什麼以這種方式實現?我認爲Python的禪宗只鼓勵一種方式,一種方式,並且運算符似乎是字符串連接的直觀方式。
你可以把代碼放在這裏嗎? – 2012-08-07 12:48:50
答案似乎沒有涵蓋這個問題,側重於問題的布爾部分,但'和'從來沒有字符串連接;它根本不像'+'。 – geoffspear 2012-08-07 13:09:27
[使用'''.join'連接字符串,而不是'+'。](http://stackoverflow.com/questions/1349311/python-string-join-is-faster-than-but-whats-wrong-這裏/ 1350289#1350289) – unutbu 2012-08-07 13:14:12