2016-11-10 46 views
1

在蟒蛇的時候,當我一個空字符串添加到非空字符串,其結果如預期異常行爲使用三元運算符追加到字符串

>>> "1234" + "" 
>>> "1234" 

但是當我使用一個三元運算符,像這樣,這是輸出

>>> "1234" + "abcd" if True else "" 
>>> "1234abcd" 

>>> "1234" + "abcd" if False else "" 
>>> "" 

爲什麼我在第二種情況下得到空字符串而不是"1234"

+0

比較你的聲明用「1234」+(「abcd」if False else「」)'。也許用'(「1234」+「abcd」)if if else else「」。 – Evert

+0

您應該考慮運算符優先級'+'勝過三元運算符。 – AChampion

+0

這是因爲如果False總是會導致其他條件,無論左邊是什麼。 –

回答

2

只是想擴大@ BrenBarn的回答(這是正確的):如果你想獲得所需的行爲,你應該做的是這樣的:

"1234" + ("abcd" if False else "") 

,或者

"1234" + "abcd" if False else "1234" + "" 
4

+運算符比三元運算符結合得更緊,所以你的代碼被解釋爲("1234" + "abcd") if condition else ""。如果條件爲True,它將返回第一個字符串(其他兩個和),否則返回空字符串。