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.)