Python 中布尔表达式的计算[重复]

问题描述 投票:0回答:2

Python 中对象的真值是什么?

相关问题

python object boolean
2个回答
24
投票

任何物体都可以被检验其真实性 值,用于 if 或 while 条件或作为布尔值的操作数 下面的操作。以下值 被认为是错误的:

  • 任何数字类型的零,例如,

    0
    0L
    0.0
    0j

  • 任何空序列,例如,

    ''
    ()
    []

  • 任何空映射,例如,

    {}

  • 用户定义类的实例,如果该类定义了

    __nonzero__()
    __len__()
    方法,则该方法返回整数零或布尔值
    False

所有其他值均被视为 true ——所以多种类型的对象总是真实的。 除非另有说明,具有布尔结果的运算和内置函数始终返回 0 或

False
(表示 false)和 1 或
True
(表示 true)。 (重要的例外:布尔运算“或”和“与”总是返回它们的操作数之一。)

https://docs.python.org/2/library/stdtypes.html#truth-value-testing

如上所述,您可以通过修改非零值来覆盖自定义对象。


9
投票

更新:删除了 Meder 帖子中的所有重复信息

对于 Python 中的自定义对象 < 3.0

__nonzero__
更改其评估方式。在 Python 3.0 中,这是
__bool__
(e-satis 的参考

理解评估的含义很重要。一种含义是当对象显式转换为 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 才是它们本身。

© www.soinside.com 2019 - 2024. All rights reserved.