Evaluation of boolean expressions in Python

后端 未结 2 1675
滥情空心
滥情空心 2020-11-27 20:56

What truth value do objects evaluate to in Python?

Related Questions

  • Boolean Value of Objects in Python: Discussion about overriding t
相关标签:
2条回答
  • 2020-11-27 21:38

    Any object can be tested for truth value, for use in an if or while condition or as operand of the Boolean operations below. The following values are considered false:

    • None

    • False

    • zero of any numeric type, for example, 0, 0L, 0.0, 0j.

    • any empty sequence, for example, '', (), [].

    • any empty mapping, for example, {}.

    • instances of user-defined classes, if the class defines a __nonzero__() or __len__() method, when that method returns the integer zero or bool value False.

    All other values are considered true -- so objects of many types are always true. Operations and built-in functions that have a Boolean result always return 0 or False for false and 1 or True for true, unless otherwise stated. (Important exception: the Boolean operations "or" and "and" always return one of their operands.)

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

    And as mentioned, you can override with custom objects by modifying nonzero.

    0 讨论(0)
  • 2020-11-27 21:56

    Update: Removed all duplicate infomation with Meder's post

    For custom objects in Python < 3.0 __nonzero__ to change how it is evaluated. In Python 3.0 this is __bool__ (Reference by e-satis)

    It is important to understand what is meant by evaluate. One meaning is when an object is explicitly casting to a bool or implicitly cast by its location (in a if or while loop).

    Another is == evalutation. 1==True, 0==False, nothing else is equal via ==.

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

    Finally, for is, only True or False are themselves.

    0 讨论(0)
提交回复
热议问题