我可以确定''总是会被考虑False,而其他任何事情都不会吗?
>>> if '':
... print('bah')
...
>>> if 'x':
... print('bah')
...
bah
为什么或者为什么不?Python 中的什么机制定义了这种行为?
如果''被评估为False,为什么我会得到这个结果:
>>> if '' == False:
... print('bah')
...
>>>
我可以确定''总是会被考虑False,而其他任何事情都不会吗?
>>> if '':
... print('bah')
...
>>> if 'x':
... print('bah')
...
bah
为什么或者为什么不?Python 中的什么机制定义了这种行为?
如果''被评估为False,为什么我会得到这个结果:
>>> if '' == False:
... print('bah')
...
>>>
从文档中:
可以测试任何对象的真值,用于iforwhile条件或作为以下布尔运算的操作数。以下值被认为是错误的:
None
False
任何数字类型的零,例如 , 0, 0L, 。0.00j
任何空序列,例如'', (), [].
任何空映射,例如{}.
用户定义类的实例,如果该类定义了一个__nonzero__()or__len__()方法,当该方法返回整数零或 bool 值时False。
所有其他值都被认为是真的——所以许多类型的对象总是真的。