Python "и" оператор с ints

Каково объяснение этого поведения в Python?

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

a and b оценивается до 20, а b and a оценивается до 10. Являются ли положительные ints эквивалентными True? Почему он оценивает второе значение? Потому что он второй?

Ответ 1

Документация объясняет это довольно хорошо:

Выражение x and y сначала оценивает x; если x является ложным, возвращается его значение; в противном случае y оценивается и возвращается возвращаемое значение.

И аналогично для or, который, вероятно, будет следующим вопросом на ваших губах.

Выражение x or y сначала оценивает x; если x истинно, возвращается его значение; в противном случае y оценивается и возвращается возвращаемое значение.

Ответ 2

Смотрите docs:

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

ненулевые целые числа обрабатываются как логические истины, поэтому вы точно определяете поведение, описанное в документах:

>>> a = 10
>>> b = 20
>>> a and b
20
>>> b and a
10

Ответ 3

В python все, что не является None, 0, False, "", [],(), {} равно True

a и b считываются как True и True в этом случае то же самое для b и a

и да в этом случае он принимает первое значение

изменить: неполное, как в комментариях