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
и да в этом случае он принимает первое значение
изменить: неполное, как в комментариях