Почему элемент except не распознает переменную "result" - PullRequest
0 голосов
/ 02 августа 2020
try:
   x = 5
   y = 0
   result = x/y
   print(result)
except Exception:
   y = 1
   print(result)

1 Ответ

0 голосов
/ 02 августа 2020

Когда вы запускаете эту строку своего кода, result = x/y, интерпретатор выполняет три шага.

  1. Найдите значения имен x и y.
  2. Разделите их.
  3. Свяжите имя result с результатом деления.

Когда y равно 0, деление на шаге 2 завершится ошибкой. Это означает, что шаг 3 никогда не достигается, поэтому ничто не связано с result. Это приводит к ошибке, когда вы пытаетесь распечатать его позже.

Обратите внимание, что деление происходит сразу после попытки выражения x/y. Выражение не сохраняется и не выполняется повторно при изменении входных данных. Таким образом, установка y на 1 в блоке except не повторяет попытку деления, а result остается неопределенным. Если вы хотите переделать это, вам нужно сделать это явно:

except:
    y = 1
    result = x/y
    print(result)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...