Рубрики
Без рубрики

Python NameError: Имя ‘xxx’ не определено – как исправить эту глупую ошибку?

Переводчик Python бросает исключение NameError, если он сталкивается с неопределенной переменной или именем функции. Чтобы исправить его, вы должны выяснить, почему переменная не определена – – наиболее частые ошибки (1) для использования переменной или имени функции в коде, прежде чем он был определен, или (2), чтобы пропустить имя … NameError Python: Имя ‘xxx’ не определено – как исправить эту глупую ошибку? Подробнее “

Автор оригинала: Girish Rao.

Переводчик Python бросает NameError Исключение, если он встречает неопределенную переменную или имя функции. Чтобы исправить это, вы должны выяснить, почему переменная не определена – самые частые ошибки (1) для использования переменной или имени функции в коде до Это было определено или (2), чтобы пропустить имя в определении или использовании.

Посмотрите на минимальный пример в нашем интерактивном коде Shell:

Упражнение : Определите переменную quote_variable. Прежде чем использовать его и исправить ошибку!

Примечание : Все объяснения и решения, приведенные ниже, были проверены с использованием Python 3.8.5.

Проблема

Когда человек начинает писать код Python, они столкнутся с NameError исключение. Переводчик Python бросает это исключение для состояния ошибки. Опытные кодеры Python, даже Легенды Python, как Guido (Я полагаю), вдаю в эти ошибки, время от времени. В его простейшей форме ошибка выглядит как что-то похожее на следующее:

>>> print(some_variable)
Traceback (most recent call last):
  File "", line 1, in 
NameError: name 'some_variable' is not defined
>>>

Желаемый вывод

Эта статья направлена на помощь читателю понять некоторые из наиболее распространенных причин этой ошибки.

>>> print(some_variable)
hello world
>>> 

Желаемый выход, предполагает переменную quote_variable , указывает на строку " Здравствуйте, мир " Отказ Другими словами, желаемый вывод будет бесплатным запуском кода Python Reader Python.

Фон

Python – это интерпретированный язык. Это означает, что он интерпретирует любой код Python, строка по линии, с начала кода до конца. Выполнение обычно останавливается при первой ошибке, который столкнулся с переводчиком Python.   Сообщение об ошибке обычно печатает полезную информацию о проблеме.   В большинстве случаев читатель может отладки, вывести и находить ошибочный синтаксис и исправить его. Этот блог попытается описать одну такую общую проблему, называемую NameError Отказ

Отсутствующее определение переменной

Одна общая причина NameError Исключение – это отсутствующее определение переменной. Как уже упоминалось ранее, Python является интерпретированным языком. Это означает, что читатель должен определять переменные перед использованием их. Рассмотрим следующий код. Читатель стремится попробовать какой-то основной код Python Real быстро. Таким образом, они уволяют переводчик Python, чтобы попробовать их свежие навыки Python.

>>> print(some_variable)
Traceback (most recent call last):
  File "", line 1, in 
NameError: name 'some_variable' is not defined
>>>

Ой !!! Читатель узнает, что они не определены quote_variable , прежде чем они использовали это! Исправьте эту проблему, как показано ниже. Определить quote_variable перед использованием этого!

>>> some_variable = 'Hello World'
>>> print(some_variable)
Hello World
>>> 

Имя переменной с ошибками

Имена переменной с ошибками ошибок могут быть ошибочными аналогичным образом. Рассмотрим следующий пример код.

>>> som_variable = 'Hello World'
>>> print(some_variable)
Traceback (most recent call last):
  File "", line 1, in 
NameError: name 'some_variable' is not defined
>>> 

Примечание : som_variable. не то же самое, что quote_variable. (то есть отсутствует 'E' )

Отсутствующие функции определения

Еще одна общая причина NameError Исключение представляет собой недостающее определение функции. Как и переменные определения, читатель должен определить любую функцию, прежде чем использовать его. Рассмотрим следующий код.

>>> some_other_string = 'Hello World'
>>> some_function(some_other_string)
Traceback (most recent call last):
  File "", line 1, in 
NameError: name 'some_function' is not defined
>>> 

Опять же, функция «Некоторые_функция» не определен до его использования. Исправьте эту проблему, как показано ниже. Определить «Некоторые_функция» перед использованием этого.

>>> def some_function(some_string):
...     print(some_string)
... 
>>> some_other_string = 'Hello World'
>>> some_function(some_other_string)
Hello World
>>>

Название функции с ошибками

Имена функций с ошибками ошибок могут быть ошибочными похожими. Рассмотрим следующий пример код.

>>> def som_function(some_string):
...     print(some_string)
... 
>>> some_other_string = 'Hello World'
>>> some_function(some_other_string)
Traceback (most recent call last):
  File "", line 1, in 
NameError: name 'some_function' is not defined
>>> 

Примечание : 'som_function' не то же самое, что «Некоторые_функция» (то есть отсутствует 'E' )

Неправильный объем

Еще одна общая причина NameError Исключение – это использование переменной в неправильном объеме. Рассмотрим следующий пример.

>>> ## Define the function some_function()
>>> def some_function():
...     a_local_variable = 'I am Local…'
...     print("Printing a Local variable from within a function definition: " + a_local_variable)
... 
>>> ## Call some_function()
>>> some_function()
Printing a Local variable from within a function definition: I am Local...
>>> 
>>> ## Try to print "a_local_variable" from outside the function definition
>>> print("Attempting to print the variable from outside some_function(): " + a_local_variable)
Traceback (most recent call last):
  File "", line 1, in 
NameError: name 'a_local_variable' is not defined
>>> 

NameError Исключение произошло потому, что a_local_variable вызвано из-за внешнего объема функций. Один из способов исправить это, определяя a_local_variable в качестве глобальной переменной вместо этого. Рассмотрим следующий пример.

>>> ## Define a Global Variable
>>> a_global_variable = 'I am global…'
>>> 
>>> ## Define the function some_function()
>>> def some_function():
...     print("Printing the Global variable from within a function definition: " + a_global_variable)
... 
>>> ## Call some_function()
>>> some_function()
Printing the Global variable from within a function definition: I am global...
>>> 
>>> ## Try to print "a_global_variable" from outside the function definition
>>> print("Attempting to print the Global variable from outside some_function(): " + a_global_variable)
Attempting to print the Global variable from outside some_function(): I am global…
>>> 

Unquoted String in Print ()

Забывая цитировать строки в Печать () Заявление может вызвать NameError исключение. Это не происходит часто, но хорошо знать, что это может произойти. Читатель, скорее всего, увидит SyntaxError а не NameError Отказ Рассмотрим следующие примеры …

>>> print(Hello)
Traceback (most recent call last):
  File "", line 1, in 
NameError: name 'Hello' is not defined

>>> print(Hello World)
  File "", line 1
    print(Hello World)
                ^
SyntaxError: invalid syntax
>>> 

В приведенных выше примерах вышеупомянутые строки вызывают ошибки. NameError в одном случае и SyntaxError в другой.

В этом случае исправление просто. Приложите струны в цитатах.

>>> print('Hello')
Hello

>>> print('Hello World')
Hello World

Заключение

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

Финктерская академия

Этот блог был доставлен вам Girish , студент Финктерская академия . Вы можете найти его Профиль намного здесь Отказ

использованная литература

Все исследования для этой статьи в блоге было сделано с использованием Python Documents , Поисковая система Google и общая база знаний Финктерская академия и Переполнение стека Общины. Концепции и идеи были также исследованы из Бостонский университет и Карьера карма общины.

Оригинал: “https://blog.finxter.com/pythons-nameerror/”