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
先看第一種情形,使用以下代碼:.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