Почему 10 и 5 возвращает 5 и 5 и 10 возвращает 10 в python? В основном это возвращает второй int после и оператор независимо от значения - PullRequest
1 голос
/ 28 марта 2020

Я искал оператор python "и" и обнаружил:

>>> 10 and 5
5
>>> 5 and 10
10

1 Ответ

1 голос
/ 28 марта 2020

Подумайте об операторе logi c, и какой операнд определяет значение всего выражения:

and:

  • первый операнд с ложным значением делает выражение False независимо от того, что следует после
  • , если есть только истинные операнды, последний устанавливает его

Примеры:

>>> 5 and 0
0
>>> 0 and 5
0 
>>> 5 and 0 and 3
0 
>>> 10 and 5
5
>>> 5 and 10
10

or:

  • первый истинный операнд делает выражение True независимо от того, что следует после
  • , если есть только ложные операнды, последний устанавливает его

Примеры:

>>> 5 or 0
5
>>> 0 or 5
5 
>>> 5 or 0 or 3
5 
>>> 10 or 5
10
>>> 5 or 10
5

Поведение Shot-Circuit:

Обратите внимание, что остальная часть выражения даже не оценивается, что важно, если вы объединяете вызовы egfunction или другие выражения с побочными эффектами:

>>> 4/0 or 5
ZeroDivisionError
>>> 5 or 4/0
5
>>> func1() or func2() and func3()
# func2 and func3 might never be called

Ассоциативность вправо-влево

Это является своего рода прямым требованием для поведения короткого замыкания, но не полностью интуитивным, особенно по сравнению с Python арифметическими c операторами:

a or b and c or d == (a or (b and (c or d)))
...