python 三元運算
阿新 • • 發佈:2018-05-28
三元 如果 而不是 ext 因此 python 2 三元運算符 odi 數據
的條件表達式不會這樣。
三元運算符
三元運算符通常在Python裏被稱為條件表達式,這些表達式基於真(true)/假(false)的條件判斷,在Python 2.4以上才有了三元操作。
下面是一個偽代碼和例子:
偽代碼:
#如果條件為真,返回真 否則返回假
condition_is_true if condition else condition_is_false
例子:
is_fat = True
state = "fat" if is_fat else "not fat" 註意這個
它允許用簡單的一行快速判斷,而不是使用復雜的多行if
語句。 這在大多數時候非常有用,而且可以使代碼簡單可維護。
另一個晦澀一點的用法比較少見,它使用了元組,請繼續看:
偽代碼:
#(返回假,返回真)[真或假]
(if_test_is_false, if_test_is_true)[test]
例子:
fat = True
fitness = ("skinny", "fat")[fat]
print("Ali is", fitness)
#輸出: Ali is fat
這之所以能正常工作,是因為在Python中,True等於1,而False等於0,這就相當於在元組中使用0和1來選取數據。
上面的例子沒有被廣泛使用,而且Python玩家一般不喜歡那樣,因為沒有Python味兒(Pythonic)。這樣的用法很容易把真正的數據與True/False弄混。
另外一個不使用元組條件表達式的緣故是因為在元組中會把兩個條件都執行,而 if-else
例如:
condition = True
print(2 if condition else 1 / 0)
#輸出: 2
print((1 / 0, 2)[condition])
#輸出ZeroDivisionError異常
這是因為在元組中是先建數據,然後用True(1)/False(0)來索引到數據。 而if-else
條件表達式遵循普通的if-else
邏輯樹, 因此,如果邏輯中的條件異常,或者是重計算型(計算較久)的情況下,最好盡量避免使用元組條件表達式。
python 三元運算