Чем объясняется такое поведение в Python?
a = 10 b = 20 a and b # 20 b and a # 10
a and b оценивается как 20, а b and a оценивается как 10. Являются ли положительные целые числа эквивалентными True?Почему оно оценивается до второго значения?Потому что это второй?
a and b
b and a
Документация объясняет это довольно хорошо:
Выражение x and y сначала оценивает x;если x равно false, возвращается его значение;в противном случае оценивается y и возвращается полученное значение.
x and y
x
y
И аналогично для or, который, вероятно, будет следующим вопросом на ваших губах.
or
выражение x or y сначала оценивает x;если x истинно, возвращается его значение;в противном случае y вычисляется и возвращается полученное значение.
x or y
См. документы :
x and y if x is false, then x, else y
ненулевые целые числа обрабатываются как логическое значение true, поэтому вы получите именно то поведение, которое описано в документации:
>>> a = 10 >>> b = 20 >>> a and b 20 >>> b and a 10
В python все, что не None, 0, False, "", [], (), {} - True
a и b читаются как True и True в этом случае то же самое для b и a
и да, в этом случае оно принимает первое значение
редактировать: не полностью, как в комментариях