python學習08:Python三目運算符(三元運算符)用法詳解

Python 可經過 if 語句來實現三目運算符的功能,所以能夠近似地把這種 if 語句當成三目運算符。做爲三目運算符的 if 語句的語法格式以下:python

True_statements if expression else False_statements

三目運算符的規則是:先對邏輯表達式 expression 求值,若是邏輯表達式返回 True,則執行並返回 True_statements 的值;若是邏輯表達式返回 False,則執行並返回 False_statements 的值。看以下代碼:express

a = 5
b = 3
st = "a大於b" if a > b else "a不大於b"
# 輸出"a大於b"
print(st)

實際上,若是隻是爲了在控制檯輸出提示信息,還能夠將上面的三目運算符表達式改成以下形式:函數

# 輸出"a大於b"
print("a大於b") if a > b else print("a不大於b")

Python 容許在三目運算符的 True_statements 或 False_statements 中放置多條語句。Python 主要支持如下兩種放置方式:spa

  1. 多條語句以英文逗號隔開:每條語句都會執行,程序返回多條語句的返回值組成的元組。
  2. 多條語句以英文分號隔開:每條語句都會執行,程序只返回第一條語句的返回值。


先看第一種情形,使用以下代碼:.net

# 第一個返回值部分使用兩條語句,逗號隔開。加上()標識更清晰
st = (print("crazyit"), 'a大於b' if a > b else "a不大於b")
print(st)

上面程序中 True_statements 爲 print("crazyit"),'a大於b',這兩條語句都會執行,程序將會返回這兩條語句的返回值組成的元組。因爲 print() 函數沒有返回值,至關於它的返回值是 None。運行上面代碼,將看到以下結果:code

crazyit
(None,'a大於b')

若是將上面語句中的逗號改成分號,將逗號以後的語句改成賦值語句,即寫成以下形式:字符串

# 第一個返回值部分使用兩條語句,分號隔開
st = print("crazyit"); x = 20 if a > b else "a不大於b"
print(st)
print(x)

此時雖然 True_statements 包含兩條語句,但程序只會返回第一條語句 print(」crazyit」) 的返回值,該語句一樣返回 None,所以至關於 str 的返回值爲 None。運行上面代碼,將看到以下結果:get

crazyit
None
20

須要指出的是,三目運算符支持嵌套,經過嵌套三目運算符,能夠執行更復雜的判斷。例如,下面代碼須要判斷 c、d 兩個變量的大小關係:it

c = 5
d = 5
# 下面將輸出c等於d
print("c大於d") if c > d else (print("c小於d") if c < d else print("c等於d"))

上面代碼首先對 c>d 求值,若是該表達式爲 True,程序將會執行並返回第一個表達式:print(」c大於d」);不然系統將會計算 else 後面的內容:(print("c小於d") if c < d else print("c等於d")),這個表達式又是一個嵌套的三目運算符表達式。注意,進入該表達式時只剩下「c小於d」或「c等於d」兩種狀況,所以該三目運算符再次判斷 c<d,若是該表達式爲 True,將會輸出「c小於d」;不然只剩下「c等於d」一種狀況,天然就輸出該字符串了。io

相關文章
相關標籤/搜索