NameError: name 'x' is not defined — почему переменная не определена?
Создал переменную, использую её, а Python говорит NameError: name 'x' is not defined. Хотя я её точно объявил! Из-за чего возникает name is not defined и как это лечить?
2 ответа
NameError значит: Python дошёл до имени, которое ещё нигде не было создано. Причины:
- Опечатка в имени — объявили
count, а пишетеCountилиconut. Имена регистрозависимы.
name = "Аня"
print(nmae) # NameError
- Используете до присваивания (выше по коду переменной ещё нет):
print(total) # ошибка
total = 10
Надо сначала присвоить:
total = 10
print(total)
- Забыли кавычки у строки — тогда текст воспринимается как имя переменной:
city = Москва # NameError: name 'Москва' is not defined
city = "Москва" # правильно
-
Переменная создана внутри функции, а вы зовёте её снаружи — она там не видна.
-
Не импортировали то, что используете (тогда чаще
NameErrorна имя функции/класса).
Сначала проверьте написание имени символ в символ, потом — что присваивание идёт раньше использования.
Очень частая ловушка в Jupyter/IDLE: вы запустили ячейку с переменной, потом перезапустили ядро (или заново открыли файл) и забыли выполнить ячейку снова. Переменная «исчезла» из памяти. Решение — выполните ячейку с присваиванием ещё раз перед использованием.