Как мне перехватить NameError при определении функции? - PullRequest
0 голосов
/ 13 января 2020

Я очень рано в процессе обучения, и у меня есть простой вопрос. У меня есть следующий простой тестовый код:

def high_low(num1, num2):
  try:
    if num1 < num2:
      print("The first number is low.")
    elif num1 > num2:
      print("The first number is high.")
    elif num1 == num2:
      print("The numbers are equal.")
  except NameError:
    print("You must enter two numbers.")

high_low(a, 7)

, это возвращает, "NameError: имя 'a' не определено"

Как я вызываю NameError при вызове функции для ответа на попробовать / кроме как внутри функции?

1 Ответ

2 голосов
/ 13 января 2020

Исключение выдается за пределами вашей функции. Когда вы звоните:

high_low(a, 7)

Python должен первый найти значение a для передачи high_low. Но a не определено. Таким образом, вы можете сделать:

try:
    high_low(a, 7)
except NameError as e:
    # Do something here

Сказав все это - это, вероятно, не очень хороший способ использовать исключения. В вашем коде есть ошибка - переменная a не определена, поэтому вы не можете передать ее значение high_low. Вероятно, нет никакого способа восстановиться после этого и, следовательно, нет причин пытаться поймать исключение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...