26.Python三目運算符(三元運算符)用法詳解


Python 可通過 if 語句來實現三目運算符的功能,因此可以近似地把這種 if 語句當成三目運算符。作為三目運算符的 if 語句的語法格式如下:

True_statements if expression else False_statements

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

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

實際上,如果只是為了在控制台輸出提示信息,還可以將上面的三目運算符表達式改為如下形式:

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

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

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


先看第一種情形,使用如下代碼:

  1. # 第一個返回值部分使用兩條語句,逗號隔開
  2. st = print("crazyit"), 'a大於b' if a > b else "a不大於b"
  3. print(st)

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

crazyit
(None,'a大於b')

如果將上面語句中的逗號改為分號,將逗號之后的語句改為賦值語句,即寫成如下形式:

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

此時雖然 True_statements 包含兩條語句,但程序只會返回第一條語句 print(”crazyit”) 的返回值,該語句同樣返回 None,因此相當於 str 的返回值為 None。運行上面代碼,將看到如下結果:

crazyit
None
20

需要指出的是,三目運算符支持嵌套,通過嵌套三目運算符,可以執行更復雜的判斷。例如,下面代碼需要判斷 c、d 兩個變量的大小關系:

  1. c = 5
  2. d = 5
  3. # 下面將輸出c等於d
  4. 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”一種情況,自然就輸出該字符串了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM