0

我可以确定''总是会被考虑False,而其他任何事情都不会吗?

>>> if '':
...    print('bah')
...
>>> if 'x':
...    print('bah')
...
bah

为什么或者为什么不?Python 中的什么机制定义了这种行为?

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

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

1 回答 1

9

文档中:

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

  • None

  • False

  • 任何数字类型的零,例如 , 0, 0L, 。0.00j

  • 任何空序列,例如'', (), [].

  • 任何空映射,例如{}.

  • 用户定义类的实例,如果该类定义了一个__nonzero__()or__len__()方法,当该方法返回整数零或 bool 值时False

所有其他值都被认为是真的——所以许多类型的对象总是真的。

于 2012-08-09T11:08:20.217 回答