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)
- 空序列、集合