Python "и" оператор с целыми числами - PullRequest
10 голосов
/ 15 февраля 2012

Чем объясняется такое поведение в Python?

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

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

Ответы [ 3 ]

16 голосов
/ 15 февраля 2012

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

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

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

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

4 голосов
/ 15 февраля 2012

См. документы :

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

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

>>> a = 10
>>> b = 20
>>> a and b
20
>>> b and a
10
0 голосов
/ 15 февраля 2012

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

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

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

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

...