and 判斷非Boolean類型數據會自動轉換類型
"A" and "B" → "B"
因為表達式 A 和 B都為True所以返回 "B"
"A" is True → False
因為這里判斷的"A": str類型,而True為Boolean類型所以不相等
bool("A") is True → True
這里將"A"裝換為Boolean類型后就可以判斷成功了
所以得出結論 and 關鍵字在做數據判斷時會將其裝換為Boolean類型后,再進行判斷
以下是官方定義的False對象
Truth Value Testing
Any object can be tested for truth value, for use in an if or while condition or as operand of the Boolean operations below. The following values are considered false:None
False
zero of any numeric type, for example, 0, 0L, 0.0, 0j.
any empty sequence, for example, '', (), [].
any empty mapping, for example, {}.
instances of user-defined classes, if the class defines a nonzero() or len() method, when that method returns the integer zero or bool value False. 1All other values are considered true — so objects of many types are always true.
Operations and built-in functions that have a Boolean result always return 0 or False for false and 1 or True for true, unless otherwise stated. (Important exception: the Boolean operations or and and always return one of their operands.)