Когда вы запускаете эту строку своего кода, result = x/y
, интерпретатор выполняет три шага.
- Найдите значения имен
x
и y
. - Разделите их.
- Свяжите имя
result
с результатом деления.
Когда y
равно 0
, деление на шаге 2 завершится ошибкой. Это означает, что шаг 3 никогда не достигается, поэтому ничто не связано с result
. Это приводит к ошибке, когда вы пытаетесь распечатать его позже.
Обратите внимание, что деление происходит сразу после попытки выражения x/y
. Выражение не сохраняется и не выполняется повторно при изменении входных данных. Таким образом, установка y
на 1
в блоке except
не повторяет попытку деления, а result
остается неопределенным. Если вы хотите переделать это, вам нужно сделать это явно:
except:
y = 1
result = x/y
print(result)