2016-09-07 17 views
2

Когда я оценить следующее выражение:Python правило приоритета для булевых операторов

1 или (1/0) и 1

Каковы правила (приоритет, оценку короткого замыкания и т.д.) следует, чтобы получить ответ

+0

Этот вопрос еще не задан. Вопрос, который относится к приоритету NOT AND & OR в python, не относится к оценке короткого замыкания, имеющейся здесь. –

ответ

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) никогда не оценивается.

2

b or anything_else определено для возврата b, если b истинно-ish, не оценивая something_else. Поскольку ваш первый 1 является истинным, ваш 1/0 никогда не оценивается, следовательно, нет ошибки. Под «true-ish» я подразумеваю любое значение, которое Python считает истинным, а не только логическое значение True. Попробуйте выражение с True или [2] вместо первого 1, чтобы понять, что я имею в виду.

+0

Укажите ссылку на официальную документацию, содержащую эту информацию. –

+0

Для Python 2: https://docs.python.org/2/reference/expressions.html#boolean-operations –