爲什麼它說,它是不是用戶想要什麼,我的意思是1和「」將 評估爲假,而「」或b將評估爲「第二」,這是 完全應該發生什麼,我不明白爲什麼它錯了?我是否缺少一些東西? ?
我覺得這部分問題被忽略。 condition and if-true or if-false
是在版本> 2.5中使用的一種技巧,正如其他答案中所解釋的,用於模擬其他語言的「condition ? if-true : if-false
或更高版本」if-true if condition else if-false
。
它的問題是,如果if-true
是計算結果爲假(""
,[]
,()
,False
或0
),那麼這將失敗,當你在評估符合市場預期,但可能蠕變對象作爲錯誤,如果if-true
是動態設置的並且可以評估爲false。
的condition and a or b
的天真期望的結果本來的a
(""
,空字符串)中的內容,作爲條件(1
)的計算結果爲true
,但作爲1 and a
計算結果爲false
所以你得到的b
內容。
解決此問題的方法是使用Python 2.5+語法(if-true if condition else if-false
)或確保if-true
從不爲假。完成第二個方式是打包在一個元組或列表if-true
和if-false
,作爲一個非空可迭代永遠是正確的:
>>> a = ""
>>> b = "second"
>>> condition = 1
>>> condition and a or b
'second'
>>> condition and [a] or [b]
['']
>>> (condition and [a] or [b])[0]
''
這是一種醜陋的解決方案,但它的存在,如果你需要的目標舊版本的Python。
謝謝,我想還有別的東西我不明白。 –