Boolean Python Value confusion

前端 未结 2 1098
刺人心
刺人心 2020-12-21 00:33

I\'m new to Python and while trying Python logical statements.I came across this which I\'m not able to understand.Can anyone tell me whats happening here in Python 2.7.What

2条回答
  •  -上瘾入骨i
    2020-12-21 00:53

    You are being confused by the behaviour of the or operator; it returns the first expression that only if it is a true value; neither 0 nor False is true so the second value is returned:

    >>> 0 or 'bar'
    'bar'
    >>> False or 'foo'
    'foo'
    

    Any value that is not numerical 0, an empty container, None or False is considered true (custom classes can alter that by implementing a __bool__ method (python 3), __nonzero__ (python 2) or __len__ (length 0 is empty).

    The second expression is not even evaluated if the first is True:

    >>> True or 1 / 0
    True
    

    The 1 / 0 expression would raise a ZeroDivision exception, but is not even evaluated by Python.

    This is documented in the boolean operators documentation:

    The expression x or y first evaluates x; if x is true, its value is returned; otherwise, y is evaluated and the resulting value is returned.

    Similarly, and returns the first expression if it is False, otherwise the second expression is returned.

提交回复
热议问题