代码之家  ›  专栏  ›  技术社区  ›  Casebash

Python中布尔表达式的计算

  •  10
  • Casebash  · 技术社区  · 15 年前

    在python中,对象评估的真实值是什么?

    相关问题

    2 回复  |  直到 10 年前
        1
  •  19
  •   twasbrillig    10 年前

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

    • 没有

    • 任何数字类型的零,例如, 0 , 0L , 0.0 , 0j .

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

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

    • 如果类定义了 __nonzero__() __len__() 方法,当该方法返回整数零或bool值时 False .

    所有其他值均视为真 --所以许多类型的对象总是正确的。 具有布尔结果的操作和内置函数始终返回0或 错误和1或 True 除非另有说明,否则为真。(重要的例外:布尔运算“或”和“和”总是返回它们的一个操作数。)

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

    如前所述,您可以通过修改非零来使用自定义对象进行覆盖。

        2
  •  9
  •   Community Nick Dandoulakis    7 年前

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

    对于python中的自定义对象<3.0 __nonzero__ 改变它的评估方式。在python 3.0中,这是 __bool__ ( Reference E-SATS)

    理解评估的含义很重要。一种含义是当对象显式地强制转换为bool或由其位置隐式地强制转换(在if或while循环中)。

    另一个是==评估。1==true,0==false,其他都不等于via==。

    >>> None==False
    False
    >>> 1==True
    True
    >>> 0==False
    True
    >>> 2==False
    False
    >>> 2==True
    False
    

    最后,因为是的,只有真实或虚假的自己。