各位可以試試看 print([] and False)
python 的邏輯運算子 and
和 or
實際上返回的並不是 True/False
,而是和 True/False
等價的東西
透過官方文檔可以看到這個表格
Operation | Result |
x or y | if x is true, then x, else y |
x and y | if x is false, then x, else y |
他們並不返回 True/False
,而是直接返回前面/後面的物件
只是這個物件可以被視為和 True/False
等價的東西
例如......
1 and 2
實際上返回的是 20 and 1
實際上返回的是 01 and 0
實際上返回的是 1
1 or 2
實際上返回的是 20 or 1
實際上返回的是 01 or 0
實際上返回的是 0
至於什麼物件會被視為和 True 等價的東西,什麼物件會被視為和 False 等價
官方文檔也有描述
內容用中文描述的話是這樣的
python 把下面這些常量定義成和 False
等價的東西
定義為 False 的常量: None
and False
被視為 0 的數字: 0
, 0.0
, 0j
, Decimal(0)
, Fraction(0, 1)
空的可迭代元素或集合: ''
, ()
, []
, {}
, set()
, range(0)
不屬於這些的都是 True
參考資料: