if語句用來作判斷,並選擇要執行的語句分支。基本格式以下:html
if CONDITION1: code_block(1) elif CONDITION2: code_block(2) elif CONDITION3: ... ... else: code_block_else
其中elif是可選的,能夠有任意多個,else是可選的,表示全都不知足條件時該執行的分支。
例如:python
a = 4 if a > 3: print("hello world")
條件表達式Condition部分以運算結果的True、False爲if的分支執行依據。在Python中全部數據對象要麼是True,要麼是False,因此任何一個數據、表達式均可以做爲if的Condition。例如:數據結構
if 1: ... if a > b: ... if 'a': ... if []: ... if [[]]: ... if a and b: ...
至於如何判斷True、False,參見布爾值和邏輯運算。app
在python中並無switch和case的分支選擇語句,可是使用if或dict也能輕鬆實現。函數
例如,使用dict實現等值的分支選擇:測試
D = { "apple": 8.0, "pear": 3.5, "orange": 2.5, "banana": 2.5 } fruit = "banana" print(D[fruit])
上面沒有提供default狀況時的分支,但使用get()能夠設置dict中找不到key時默認返回的值。例如:ui
print(D.get("greens","no this fruit"))
還能夠經過in的成員測試來設置分支:this
if fruit in D: print(D[fruit]) else: print("no this fruit")
dict只能作等值比較的分支選擇,要提供非等值的分支比較,只能用if語句。code
例如:htm
score = 77 if score >= 90: print("優秀") elif 70 <= score < 90: print("良好") elif 60 <= score < 70: print("及格") else: print("不及格")
使用if的好處是通俗易懂,使用dict的好處是將數據存儲到數據結構中,而存儲到數據結構中的數據能夠是很複雜的。好比,將函數做爲dict的value。
即所謂的三目運算,只不過python中不支持x ? y : z
的方式,而是使用if的另外一種表達式語法。
對於if x: xxx; else yyy
這樣的兩分支語句,可使用更精簡的表達式方式來描述:
xxx if x else yyy
雖然看上去和原始的沒什麼區別,但不少時候要方便的多。例如賦值:
if x: a = y else: a = z
等價的三元if寫法:
a = y if x else z
注意,上面"="表示這整行是一個賦值語句,右邊的是評估對象,評估以後賦值給a,也就是等價於a = (y if x else z)
,而不是等價於(a = y) if x else z
。
else不能缺乏,不然不是三元運算。另外,if的分支代碼體y和z都必須只能是單條語句,不能是多語句。也就是說,不能轉換下面的代碼格式爲三元表達式。
if x: statement1 statement2 else: statement3 statement4
實際上,三元運算也能使用and / or來實現,還能使用序列 + bool()
來實現。
例如:
a = ((x and y) or z)
通常比較少用and/or來實現分支,由於可讀性很差,並且並不老是能和if等價。但有一種狀況使用and/or很是方便:從多個值中選擇一個真值。例如:
a = x or y or z or None
下面是使用序列 + bool()
的方式實現的三元運算操做,思路是bool(CONDITION)
做爲序列的索引。
a = [y, z][bool(x)]
仍是那句話,python中基本老是首選簡單的、通俗易懂的方式。因此,用if吧。