NameError — одна из самых распространенных ошибок в Python. Начинающих она может пугать, но в ней нет ничего сложного. Это ошибка говорит о том, что вы попробовали использовать переменную, которой не существует.
В этом руководстве поговорим об ошибке «NameError name is not defined». Разберем несколько примеров и разберемся, как эту ошибку решать.
NameError возникает в тех случаях, когда вы пытаетесь использовать несуществующие имя переменной или функции.
В Python код запускается сверху вниз. Это значит, что переменную нельзя объявить уже после того, как она была использована. Python просто не будет знать о ее существовании.
Самая распространенная NameError
выглядит вот так:
NameError: name 'some_name' is not defined
Разберем частые причина возникновения этой ошибки.
Причина №1: ошибка в написании имени переменной или функции
Для человека достаточно просто сделать опечатку. Также просто для него — найти ее. Но это не настолько просто для Python.
Язык способен интерпретировать только те имена, которые были введены корректно. Именно поэтому важно следить за правильностью ввода всех имен в коде.
Если ошибку не исправить, то возникнет исключение. Возьмем в качестве примера следующий код:
books = ["Near Dark", "The Order", "Where the Crawdads Sing"]
print(boooks)
Он вернет:
Traceback (most recent call last):
File "main.py", line 3, in
print(boooks)
NameError: name 'boooks' is not defined
Для решения проблемы опечатку нужно исправить. Если ввести print(books)
, то код вернет список книг.
Таким образом при возникновении ошибки с именем в первую очередь нужно проверить, что все имена переменных и функций введены верно.
Причина №2: вызов функции до объявления
Функции должны использоваться после объявления по аналогии с переменными. Это связано с тем, что Python читает код сверху вниз.
Напишем программу, которая вызывает функцию до объявления:
books = ["Near Dark", "The Order", "Where the Crawdads Sing"]
print_books(books)
def print_books(books):
for b in books:
print(b)
Код вернет:
Traceback (most recent call last):
File "main.py", line 3, in
print_books(books)
NameError: name 'print_books' is not defined
На 3 строке мы пытаемся вызвать print_books()
. Однако эта функция объявляется позже.
Чтобы исправить эту ошибку, нужно перенести функцию выше:
def print_books(books):
for b in books:
print(b)
books = ["Near Dark", "The Order", "Where the Crawdads Sing"]
print_books(books)
Причина №3: переменная не объявлена
Программы становятся больше, и порой легко забыть определить переменную. В таком случае возникнет ошибка. Причина в том, что Python не способен работать с необъявленными переменными.
Посмотрим на программу, которая выводит список книг:
Такой код вернет:
Traceback (most recent call last):
File "main.py", line 1, in
for b in books:
NameError: name 'books' is not defined
Переменная books
объявлена не была.
Для решения проблемы переменную нужно объявить в коде:
books = ["Near Dark", "The Order", "Where the Crawdads Sing"]
for b in books:
print(b)
Причина №4: попытка вывести одно слово
Чтобы вывести одно слово, нужно заключить его в двойные скобки. Таким образом мы сообщаем Python, что это строка. Если этого не сделать, язык будет считать, что это часть программы. Рассмотрим такую инструкцию print()
:
Этот код пытается вывести слово «Books» в консоль. Вместо этого он вернет ошибку:
Traceback (most recent call last):
File "main.py", line 1, in
print(Books)
NameError: name 'Books' is not defined
Python воспринимает «Books» как имя переменной. Для решения проблемы нужно заключить имя в скобки:
Теперь Python знает, что нужно вывести в консоли строку, и код возвращает Books
.
Причина №5: объявление переменной вне области видимости
Есть две области видимости переменных: локальная и глобальная. Локальные переменные доступны внутри функций или классов, где они были объявлены. Глобальные переменные доступны во всей программе.
Если попытаться получить доступ к локальной переменной вне ее области видимости, то возникнет ошибка.
Следующий код пытается вывести список книг вместе с их общим количеством:
def print_books():
books = ["Near Dark", "The Order", "Where the Crawdads Sing"]
for b in books:
print(b)
print(len(books))
Код возвращает:
Traceback (most recent call last):
File "main.py", line 5, in
print(len(books))
NameError: name 'books' is not defined
Переменная books
была объявлена, но она была объявлена внутри функции print_books()
. Это значит, что получить к ней доступ нельзя в остальной части программы.
Для решения этой проблемы нужно объявить переменную в глобальной области видимости:
books = ["Near Dark", "The Order", "Where the Crawdads Sing"]
def print_books():
for b in books:
print(b)
print(len(books))
Код выводит название каждой книги из списка books
. После этого выводится общее количество книг в списке с помощью метода len()
.
Первый шаг в исправлении ошибок при написании кода — понять, что именно пошло не так. И хотя некоторые сообщения об ошибках могут показаться запутанными, большинство из них помогут вам понять, что же не работает в вашей программе. В этой статье мы поговорим о том, как исправить ошибку NameError в Python. Мы рассмотрим несколько примеров кода, показывающих, как и почему возникает эта ошибка, и покажем, как ее исправить.
В Python ошибка NameError возникает, когда вы пытаетесь использовать переменную, функцию или модуль, которые не существуют, или использовать их недопустимым образом.
Некоторые из распространенных причин, вызывающих эту ошибку:
- Использование имени переменной или функции, которое еще не определено
- Неправильное написание имени переменной/функции при её вызове
- Использование модуля в Python без импорта этого модуля и т. д.
Как исправить «NameError: Name Is Not Defined» в Python
В этом разделе мы рассмотрим, как исправить ошибку NameError: Name is Not Defined
в Python.
Мы начнем с блоков кода, вызывающих ошибку, а затем посмотрим, как их исправить.
[python_ad_block]
Пример №1. Имя переменной не определено
name = "John" print(age) # NameError: name 'age' is not defined
В приведенном выше коде мы определили переменную name
, но далее попытались вывести переменную age
, которая ещё не была определена.
Мы получили сообщение об ошибке: NameError: name 'age' is not defined
. Это означает, что переменная age
не существует, мы её не задали.
Чтобы исправить это, мы можем создать переменную, и наш код будет работать нормально. К примеру, это можно сделать следующим образом:
name = "John" age = 12 print(age) # 12
Теперь значение переменной age
выводится без проблем.
Точно так же эта ошибка может возникнуть, если мы неправильно напишем имя нашей переменной. Например, сделаем так:
name = "John" print(nam) # NameError: name 'nam' is not defined
В коде выше мы написали nam
вместо name
. Чтобы исправить подобную ошибку, вам просто нужно правильно написать имя вашей переменной.
Пример №2. Имя функции не определено
def sayHello(): print("Hello World!") sayHelloo() # NameError: name 'sayHelloo' is not defined
В приведенном выше примере мы добавили лишнюю букву o
при вызове функции — sayHelloo()
вместо sayHello()
. Это просто опечатка, однако она вызовет ошибку, потому что функции с таким именем не существует.
Итак, мы получили ошибку: NameError: name 'sayHelloo' is not defined
. Подобные орфографические ошибки очень легко пропустить. Сообщение об ошибке обычно помогает исправить это.
Вот правильный способ вызова данной функции:
def sayHello(): print("Hello World!") sayHello() # Hello World!
Как мы видели в предыдущем разделе, вызов переменной, которая еще не определена, вызывает ошибку. То же самое относится и к функциям.
К примеру, это может выглядеть так:
def sayHello(): print("Hello World!") sayHello() # Hello World! addTWoNumbers() # NameError: name 'addTWoNumbers' is not defined
В приведенном выше коде мы вызвали функцию addTWoNumbers()
, которая еще не была определена в программе. Чтобы исправить это, вы можете создать функцию, если она вам нужна, или просто избавиться от нее.
Обратите внимание, что вызов функции перед ее созданием приведет к той же ошибке. То есть такой код также выдаст вам ошибку:
sayHello() def sayHello(): print("Hello World!") # NameError: name 'sayHello' is not defined
Поэтому вы всегда должны определять свои функции перед их вызовом.
Пример №3. Использование модуля без его импорта
x = 5.5 print(math.ceil(x)) # NameError: name 'math' is not defined
В приведенном выше примере мы используем метод математической библиотеки Python math.ceil()
. Однако до этого мы не импортировали модуль math
.
В результате возникает следующая ошибка: NameError: name 'math' is not defined
. Это произошло потому, что интерпретатор не распознал ключевое слово math
.
Таким образом, если мы хотим использовать функции библиотеки math
в Python, мы должны сначала импортировать соответствующий модуль.
Вот так будет выглядеть исправленный код:
import math x = 5.5 print(math.ceil(x)) # 6
В первой строке кода мы импортировали математический модуль math
. Теперь, когда вы запустите приведенный выше код, вы получите результат 6. То же самое относится и ко всем остальным библиотекам. Сначала нужно импортировать библиотеку с помощью ключевого слова import
, а потом уже можно использовать весь функционал этой библиотеки. Подробнее про импорт модулей можно узнать в статье «Как импортировать в Python?»
Заключение
В этой статье мы поговорили о том, как исправить ошибку NameError в Python.
Мы выяснили, что собой представляет NameError. Затем мы разобрали несколько примеров, которые могли вызвать ошибку NameError при работе с переменными, функциями и модулями в Python. Также мы показали, как можно исправить эти ошибки.
Надеемся, данная статья была вам полезна! Успехов в написании кода!
Перевод статьи «NameError: Name plot_cases_simple is Not Defined – How to Fix this Python Error».
Prerequisites: Python Exception Handling
There are several standard exceptions in Python and NameError is one among them. NameError is raised when the identifier being accessed is not defined in the local or global scope. General causes for NameError being raised are :
1. Misspelled built-in functions:
In the below example code, the print statement is misspelled hence NameError will be raised.
Python3
geek
=
input
()
print
(geek)
Output :
NameError: name 'print' is not defined
2. Using undefined variables:
When the below program is executed, NameError will be raised as the variable geek is never defined.
Python3
geeky
=
input
()
print
(geek)
Output :
NameError: name 'geek' is not defined
3. Defining variable after usage:
In the following example, even though the variable geek is defined in the program, it is defined after its usage. Since Python interprets the code from top to bottom, this will raise NameError
Python3
print
(geek)
geek
=
"GeeksforGeeks"
Output :
NameError: name 'geek' is not defined
4. Incorrect usage of scope:
In the below example program, the variable geek is defined within the local scope of the assign function. Hence, it cannot be accessed globally. This raises NameError.
Python3
def
assign():
geek
=
"GeeksforGeeks"
assign()
print
(geek)
Output :
NameError: name 'geek' is not defined
Handling NameError
To specifically handle NameError in Python, you need to mention it in the except statement. In the following example code, if only the NameError is raised in the try block then an error message will be printed on the console.
Python3
def
geek_message():
try
:
geek
=
"GeeksforGeeks"
return
geeksforgeeks
except
NameError:
return
"NameError occurred. Some variable isn't defined."
print
(geek_message())
Output :
NameError occurred. Some variable isn't defined.
Last Updated :
29 Jan, 2022
Like Article
Save Article
This first step in fixing a coding error is to understand the error. Although some error messages may seem confusing, most of them will help you fix the error.
In this article, we’ll be talking about an error that falls under the NameError category in Python.
You’ll see what a NameError is, some code examples to show how/why the error occurs, and how to fix them.
What Is a NameError in Python?
In Python, the NameError occurs when you try to use a variable, function, or module that doesn’t exist or wasn’t used in a valid way.
Some of the common mistakes that cause this error are:
- Using a variable or function name that is yet to be defined.
- Misspelling a variable/function name when calling the variable/function.
- Using a Python module without importing the module, and so on.
In this section, you’ll see how to fix the “NameError: Name is Not Defined” error in Python.
I’ve divided this section into sub-sections to show the error above when using variables, functions, and modules.
We’ll start with code blocks that raise the error and then see how to fix them.
Example #1 – Variable Name Is Not Defined in Python
name = "John"
print(age)
# NameError: name 'age' is not defined
In the code above, we defined a name
variable but tried to print age
which is yet t0 be defined.
We got an error that says: NameError: name 'age' is not defined
to show that the age
variable doesn’t exist.
To fix this, we can create the variable and our code will run fine. Here’s how:
name = "John"
age = 12
print(age)
# 12
Now the value of age
gets printed out.
Similarly, the same error can be raised when we misspell a variable name. Here’s an example:
name = "John"
print(nam)
# NameError: name 'nam' is not defined
In the code above, we wrote nam
instead of name
. To fix errors like this, you just have to spell the variable name the right way.
Example #2 – Function Name Is Not Defined in Python
def sayHello():
print("Hello World!")
sayHelloo()
# NameError: name 'sayHelloo' is not defined
In the example above, we added an extra o while calling the function — sayHelloo()
instead of sayHello()
.
We got the error: NameError: name 'sayHelloo' is not defined
. Spelling errors like this are very easy to miss. The error message usually helps in fixing this.
Here’s the right way to call the function:
def sayHello():
print("Hello World!")
sayHello()
# Hello World!
Just like we saw in the previous section, calling a variable that is yet to be defined raises an error. The same applies to functions.
Here’s an example:
def sayHello():
print("Hello World!")
sayHello()
# Hello World!
addTWoNumbers()
# NameError: name 'addTWoNumbers' is not defined
In the code above, we called a function – addTWoNumbers()
– that was yet to be defined in the program. To fix this, you can create the function if you need it or just get rid of the function if it is irrelevant.
Note that calling a function before creating it will throw the same error your way. That is:
sayHello()
def sayHello():
print("Hello World!")
# NameError: name 'sayHello' is not defined
So you should always define your functions before calling them.
Example #3 – Using a Module Without Importing the Module Error in Python
x = 5.5
print(math.ceil(x))
# NameError: name 'math' is not defined
In the example above, we’re making use of the Python math.ceil
method without importing the math
module.
The resulting error was this: NameError: name 'math' is not defined
. This happened because the interpreter did not recognize the math
keyword.
Along with other math methods in Python, we must first import the math
module to use it.
Here’s a fix:
import math
x = 5.5
print(math.ceil(x))
# 6
In the first line of the code, we imported the math
module. Now, when you run the code above, you should have 6 returned.
Summary
In this article, we talked about the “NameError: Name is Not Defined” error in Python.
We first defined what a NameError is in Python.
We then saw some examples that could raise a NameError when working with variables, functions, and modules in Python. Each example, divided into sections, showed how to fix the errors.
Happy coding!
Learn to code for free. freeCodeCamp’s open source curriculum has helped more than 40,000 people get jobs as developers. Get started
NameErrors are one of the most common types of Python errors. When you’re first getting started, these errors can seem intimidating. They’re not too complicated. A NameError means that you’ve tried to use a variable that does not yet exist.
In this guide, we’re going to talk about the “nameerror name is not defined” error and why it is raised. We’ll walk through a few example solutions to this error to help you understand how to resolve it in your code.
Find Your Bootcamp Match
- Career Karma matches you with top tech bootcamps
- Access exclusive scholarships and prep courses
Select your interest
First name
Last name
Phone number
By continuing you agree to our Terms of Service and Privacy Policy, and you consent to receive offers and opportunities from Career Karma by telephone, text message, and email.
What is a NameError?
A NameError is raised when you try to use a variable or a function name that is not valid.
In Python, code runs from top to bottom. This means that you cannot declare a variable after you try to use it in your code. Python would not know what you wanted the variable to do.
The most common NameError looks like this:
nameerror name is not defined
Let’s analyze a few causes of this error.
Cause #1: Misspelled Variable or Function Name
It’s easy for humans to gloss over spelling mistakes. We can easily tell what a word is supposed to be even if it is misspelled. Python does not have this capability.
Python can only interpret names that you have spelled correctly. This is because when you declare a variable or a function, Python stores the value with the exact name you have declared.
If there is a typo anywhere that you try to reference that variable, an error will be returned.
Consider the following code snippet:
books = ["Near Dark", "The Order", "Where the Crawdads Sing"] print(boooks)
Our code returns:
Traceback (most recent call last): File "main.py", line 3, in <module> print(boooks) NameError: name 'boooks' is not defined
To solve this problem, all we have to do is fix the typo. If we use “print(books)”, our code returns:
["Near Dark", "The Order", "Where the Crawdads Sing"]
If you receive a name error, you should first check to make sure that you have spelled the variable or function name correctly.
Cause #2: Calling a Function Before Declaration
Functions must be declared before they are used, like variables. This is because Python reads code from top-to-bottom.
Let’s write a program that calls a function before it is declared:
books = ["Near Dark", "The Order", "Where the Crawdads Sing"] print_books(books) def print_books(books): for b in books: print(b)
Our code returns:
Traceback (most recent call last): File "main.py", line 3, in <module> print_books(books) NameError: name 'print_books' is not defined
We are trying to call print_books() on line three. However, we do not define this function until later in our program. To fix this error, we can move our function declaration to a place before we use it:
def print_books(books): for b in books: print(b) books = ["Near Dark", "The Order", "Where the Crawdads Sing"] print_books(books)
Our code returns:
Near Dark The Order Where the Crawdads Sing
Our code has successfully printed out the list of books.
Cause #3: Forget to Define a Variable
As programs get larger, it is easy to forget to define a variable. If you do, a name error is raised. This is because Python cannot work with variables until they are declared.
Let’s take a look at a program that prints out a list of books:
Our code returns:
Traceback (most recent call last): File "main.py", line 1, in <module> for b in books: NameError: name 'books' is not defined
We have not declared a variable called “books”. To solve this problem, we need to declare “books” before we use it in our code:
books = ["Near Dark", "The Order", "Where the Crawdads Sing"] for b in books: print(b)
Let’s try to run our program again and see what happens:
Near Dark The Order Where the Crawdads Sing
Now that we have defined a list of books, Python can print out each book from the list.
Cause #4: Try to Print a Single Word
To print out a word in Python, you need to surround it in either single or double quotes. This tells Python that a word is a string. If a word is not surrounded by quotes, it is treated as part of a program. Consider the following print() statement:
This code tries to print the word “Books” to the console. The code returns an error:
“Career Karma entered my life when I needed it most and quickly helped me match with a bootcamp. Two months after graduating, I found my dream job that aligned with my values and goals in life!”
Venus, Software Engineer at Rockbot
Traceback (most recent call last): File "main.py", line 1, in <module> print(Books) NameError: name 'Books' is not defined
Python treats “Books” like a variable name. To solve this error, we can enclose the word “Books” in quotation marks:
Python now knows that we want to print out a string to the console. Our new code returns: Books.
Cause #5: Declaring a Variable Out of Scope
There are two variable scopes: local and global.
Local variables are only accessible in the function or class in which they are declared. Global variables are accessible throughout a program.
If you try to access a local variable outside the scope in which it is defined, an error is raised.
The following code should print out a list of books followed by the number of books in the list:
def print_books(): books = ["Near Dark", "The Order", "Where the Crawdads Sing"] for b in books: print(b) print_books() print(len(books))
Our code returns:
Near Dark The Order Where the Crawdads Sing Traceback (most recent call last): File "main.py", line 6, in <module> print(len(books)) NameError: name 'books' is not defined
Our code successfully prints out the list of books. On the last line of our code, an error is returned. While we have declared the variable “books”, we only declared it inside our print_books() function. This means the variable is not accessible to the rest of our program.
To solve this problem, we can declare books in our main program. This will make it a global variable:
books = ["Near Dark", "The Order", "Where the Crawdads Sing"] def print_books(): for b in books: print(b) print_books() print(len(books))
Our code returns:
Near Dark The Order Where the Crawdads Sing 3
Our code prints out every book in the “books” list. Then, our code prints out the number of books in the list using the len() method.