我可以确定''
始终被视为False
而其他任何内容都不会被视为<{p}}吗?
>>> if '':
... print('bah')
...
>>> if 'x':
... print('bah')
...
bah
为什么或为什么不呢? Python中的哪种机制定义了这种行为?
如果将''
评估为False
,为什么我会得到此结果:
>>> if '' == False:
... print('bah')
...
>>>
答案 0 :(得分:9)
可以测试任何对象的真值,以便在if
或while
条件下使用,或者作为下面布尔运算的操作数。以下值被视为false:
None
False
任何数字类型的零,例如0
,0L
,0.0
,0j
。
任何空序列,例如''
,()
,[]
。
任何空映射,例如{}
。
用户定义类的实例,如果类定义了__nonzero__()
或__len__()
方法,则该方法返回整数零或bool值False
。
所有其他值都被认为是真的 - 因此许多类型的对象始终为真。