← Все вопросы

NameError: name 'x' is not defined — почему переменная не определена?

Задан 6 месяцев назад1.2к просмотров2 ответа
9

Создал переменную, использую её, а Python говорит NameError: name 'x' is not defined. Хотя я её точно объявил! Из-за чего возникает name is not defined и как это лечить?

2 ответа

12
✓ Принятый ответ — помог автору

NameError значит: Python дошёл до имени, которое ещё нигде не было создано. Причины:

  1. Опечатка в имени — объявили count, а пишете Count или conut. Имена регистрозависимы.
name = "Аня"
print(nmae)   # NameError
  1. Используете до присваивания (выше по коду переменной ещё нет):
print(total)   # ошибка
total = 10

Надо сначала присвоить:

total = 10
print(total)
  1. Забыли кавычки у строки — тогда текст воспринимается как имя переменной:
city = Москва     # NameError: name 'Москва' is not defined
city = "Москва"   # правильно
  1. Переменная создана внутри функции, а вы зовёте её снаружи — она там не видна.

  2. Не импортировали то, что используете (тогда чаще NameError на имя функции/класса).

Сначала проверьте написание имени символ в символ, потом — что присваивание идёт раньше использования.

4

Очень частая ловушка в Jupyter/IDLE: вы запустили ячейку с переменной, потом перезапустили ядро (или заново открыли файл) и забыли выполнить ячейку снова. Переменная «исчезла» из памяти. Решение — выполните ячейку с присваиванием ещё раз перед использованием.

Ваш ответ

Войдите, чтобы ответить на вопрос.