我可以确定''
总是会被考虑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')
...
>>>
从文档中:
可以测试任何对象的真值,用于if
orwhile
条件或作为以下布尔运算的操作数。以下值被认为是错误的:
None
False
任何数字类型的零,例如 , 0
, 0L
, 。0.0
0j
任何空序列,例如''
, ()
, []
.
任何空映射,例如{}
.
用户定义类的实例,如果该类定义了一个__nonzero__()
or__len__()
方法,当该方法返回整数零或 bool 值时False
。
所有其他值都被认为是真的——所以许多类型的对象总是真的。