在Python中评估布尔表达式

时间:2009-09-21 01:15:22

标签: python object boolean

对象在Python中评估的真值是什么?

相关问题

2 个答案:

答案 0 :(得分:19)

  

可以测试任何对象的真实性   值,用于if或while   条件或布尔值的操作数   以下操作。以下值   被认为是假的:

     
      
  •   
  •   
  • 任何数字类型的零,例如00L0.00j

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

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

  •   
  • 用户定义类的实例,如果类定义了__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本身。