Python “and” operator with ints

前端 未结 3 1042
佛祖请我去吃肉
佛祖请我去吃肉 2021-01-11 18:00

What is the explanation for this behavior in Python?

a = 10
b = 20
a and b # 20
b and a # 10

a and b evaluates to 20, while

相关标签:
3条回答
  • 2021-01-11 18:19

    See the docs:

    x and y     if x is false, then x, else y
    

    non-zero integers are treated as boolean true, so you get exactly the behavior described in the docs:

    >>> a = 10
    >>> b = 20
    >>> a and b
    20
    >>> b and a
    10
    
    0 讨论(0)
  • 2021-01-11 18:25

    The documentation explains this quite well:

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

    And similarly for or which will probably be the next question on your lips.

    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.

    0 讨论(0)
  • 2021-01-11 18:25

    In python everything that is not None, 0, False, "", [], (), {} is True

    a and b is readed as True and True in this case the same for b and a

    and yes in this case it takes the first value

    edit: incomplete as in the comments

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