Я пишу функцию, которая принимает пользовательский ввод:
def func(input):
Я поставил try и excepts, чтобы убедиться, что входной файл имеет тип, который я хочу. Однако, когда я вставляю testInput, он выдает NameError vs "testInput".
Я понимаю, почему, поскольку он думает, что testInput является именем переменной, в то время как он знает, что "testInput" - это строка.
Есть ли разумный способ поймать эту ошибку?
NameError обычно вызвано именем переменной undefined. Если вы используете testInput
как имя переменной, т.е. Без кавычек, вы должны сначала определить его. Попробуйте что-то вроде этого:
testInput = "my_input_test"
func(testInput)
Или вы можете просто использовать строку как аргумент:
func("my_input_test")
Иногда опечатки могут также приводить к имени переменной undefined, а затем a NameError
.
Похоже, что ваши операторы try ... except
находятся внутри вашей функции, ошибка происходит до того, как тело функции выполнено, поэтому вы не можете зафиксировать ее внутри тела функции. Чтобы продемонстрировать, как эта ошибка может быть обнаружена, вы можете попробовать следующий код.
# !!! DEMO ONLY. DON'T DO THIS.
try:
func(testInput)
except NameError:
# Your code here
ВАЖНО: NameErrors обычно являются признаком того, что вам нужно исправить имена переменных/функций/классов. Использование try ... except
для их обнаружения, как правило, является плохой практикой и приведет к беспорядочному и непригодному для использования коду.
NameError
не очень хорошая идея, NameError
следует исправить код.