В вашем коде есть несколько проблем.
Как есть, NameError
будет увеличено на:
print(divide(4,f))
, потому что нет f
.
Вы должны обработать исключение, когда оно поднято, например:
try:
print(divide(4,f))
except NameError:
print('variable f is not defined')
Теперь, когда вы посмотрите на саму функцию, эта строка:
except (ZeroDivisionError, NameError):
означает, что следующий блок будет выполнен когда ZeroDivisionError
или NameError
поднят. Таким образом, следующее:
except NameError:
никогда не получает играть. И сообщение вроде подсказывает, что вы, возможно, искали что-то вроде TypeError
. Например, когда вы хотели получить число, но получили, например, str
.
и NameError
, то есть, по сути, переменную, которая не определена, вы никогда (OK, если вы не del
ее) не увидите, что она обращается к x
или y
в функции, которая принимает эти два аргумента. Вы могли бы видеть TypeError
вызывающим его без ожидаемого позиционного аргумента, но в этой функции будут присутствовать x
и y
.