Когда я оценить следующее выражение:Python правило приоритета для булевых операторов
1 или (1/0) и 1
Каковы правила (приоритет, оценку короткого замыкания и т.д.) следует, чтобы получить ответ
Когда я оценить следующее выражение:Python правило приоритета для булевых операторов
1 или (1/0) и 1
Каковы правила (приоритет, оценку короткого замыкания и т.д.) следует, чтобы получить ответ
Короткое замыкание на Python. В вашем примере, выражение
1 or (1/0) and 1
заканчивает оценку на первом 1
и возвращает True
.
Более минимальный пример служит для иллюстрации оценки короткого замыкания на Python. Рассмотрим выражение:
(1/0) or 1
В этой связи возникает ZeroDivisionError
исключение при оценке (1/0)
. Но выражение:
1 or (1/0)
короткого замыкания вычисляется в True
. Никакое исключение не возникает, поскольку подвыражение (1/0)
никогда не оценивается.
b or anything_else
определено для возврата b, если b истинно-ish, не оценивая something_else. Поскольку ваш первый 1 является истинным, ваш 1/0 никогда не оценивается, следовательно, нет ошибки. Под «true-ish» я подразумеваю любое значение, которое Python считает истинным, а не только логическое значение True
. Попробуйте выражение с True или [2] вместо первого 1, чтобы понять, что я имею в виду.
Укажите ссылку на официальную документацию, содержащую эту информацию. –
Для Python 2: https://docs.python.org/2/reference/expressions.html#boolean-operations –
Этот вопрос еще не задан. Вопрос, который относится к приоритету NOT AND & OR в python, не относится к оценке короткого замыкания, имеющейся здесь. –