python中带str的If语句的机制

python中带str的If语句的机制,python,Python,我能确定这总是被认为是错误的,而其他任何东西都是错误的吗 >>> if '': ... print('bah') ... >>> if 'x': ... print('bah') ... bah 为什么?Python中的什么机制定义了这种行为 如果评估为False,为什么会得到这个结果: >>> if '' == False: ... print('bah') ... >>> 从: 任何对象都可以测试真

我能确定这总是被认为是错误的,而其他任何东西都是错误的吗

>>> if '':
...    print('bah')
...
>>> if 'x':
...    print('bah')
...
bah
为什么?Python中的什么机制定义了这种行为

如果评估为False,为什么会得到这个结果:

>>> if '' == False:
...    print('bah')
...
>>>
从:

任何对象都可以测试真值,用于if或while条件,或作为下面布尔运算的操作数。以下值被认为是错误的:

没有

假的

任何数字类型的零,例如0、0L、0.0、0j

任何空序列,例如,,[]

任何空映射,例如,{}

用户定义类的实例,如果该类定义了一个_非零_或_len u方法,则该方法返回的整数为零或布尔值为False


所有其他值都被视为true-因此许多类型的对象始终为true。

yes-{}、[]、None、False、0和空字符串被解析为False这是因为if语句隐式地将给定的表达式结果转换为bool类型。所以bool是假的,bool==False是实际测试的。@Qiau:给你印象是假的东西被评估为bool是假的?事实并非如此,不同的结果证明了这一点。只有在只有布尔值才有意义的地方使用值时,才会隐式转换为布尔值,例如if或while之后的条件。记住“is”与“==”不是相同的比较是“比较身份”。is False将的标识与False的标识进行比较,这显然是不一样的。@Qiau:对bool的隐式转换应用于整个表达式。if:与if bool相同。if==False与if-bool==False相同。@Qiau:您永远不想使用==或与True或False进行比较。使用if not:表达你的要求。