答案 0 :(得分:19)
可以测试任何对象的真实性 值,用于if或while 条件或布尔值的操作数 以下操作。以下值 被认为是假的:
无
假
任何数字类型的零,例如
0
,0L
,0.0
,0j
。任何空序列,例如
''
,()
,[]
。任何空映射,例如
{}
。用户定义类的实例,如果类定义了
__nonzero__()
或__len__()
方法,则该方法返回整数零或bool值False
。所有其他值均视为真 - 所以很多类型的对象总是如此。 除非另有说明,否则具有布尔结果的操作和内置函数总是返回0或
False
表示false,1或True
表示true。 (重要的例外:布尔运算“或”和“和”总是返回其中一个操作数。)
https://docs.python.org/2/library/stdtypes.html#truth-value-testing
如上所述,您可以通过修改非零来覆盖自定义对象。
答案 1 :(得分:9)
更新:删除了Meder帖子的所有重复信息
对于Python中的自定义对象< 3.0 __nonzero__
更改评估方式。在Python 3.0中,这是__bool__
(Reference e-satisf)
了解评估的含义非常重要。一个含义是当一个对象显式地转换为bool或由其位置隐式转换时(在if或while循环中)。
另一个是==评估。 1 == True,0 == False,通过==没有其他任何东西。
>>> None==False
False
>>> 1==True
True
>>> 0==False
True
>>> 2==False
False
>>> 2==True
False
最后,对于is,只有True或False本身。