guest@blog.cmj.tw: ~/posts $

Python True/False


note ~

記錄一下快速找到的資料:有人在 Python 板上問 為什麼 condiiton 可以這樣子寫

condiiton = 10
while condiiton:
    print(condiiton)
    condiiton -= 1

主要是因為 Python 的語法支援

根據 Python 語法 while-stmt 是 "while" assignment_expression ":" 這種形式

其中 assignment_expression : [ identifier ":=" ] expression

如果你不賦值 後面就會是一個表達式

根據文件中表示:根據 while 後面結果判斷是否為 True/False 來決定執行那段程式碼

接著就跳到 PEP 308 來決定條件表達式是什麼 但是你的問題是 condiiton 是一個變數

問題就變成變數本身如何判斷是 True 還是 False 這就跳到 Python 的 Truth Value Testing

object 被判斷為 True 除非

  • 有定義 __bool__ 而且回傳 False
  • 有定義 __len__ 而且回傳 0
  • 直接就是 False 或者 None
  • 各種零,像是 0, 0.0, 0j, Decimal(0), Fraction(0, 1)
  • 空序列、集合