
This error is Python’s way of asking: “Who?” The message “NameError: name not defined” often appears when the interpreter cannot find a reference to a variable or function. Encountering a NameError: name not defined can be frustrating but solvable.
You tried to use a variable or function that Python doesn’t know about. It’s like trying to call a friend whose number you haven’t saved in your phone. This happens frequently in Python coding when a NameError, such as name not defined, arises unexpectedly.
What Does This Error Mean?
A NameError happens when Python tries to look up a name (variable, function, library) and can’t find it in its current memory. This triggers the familiar NameError: name not defined.
3 Common Causes and Fixes
Cause 1: A Simple Typo (Most Common)
You defined a variable, but misspelled it when you tried to use it. This is a common reason why you might encounter a NameError: because the name was not defined correctly.
Problem Code:
message = "Hello, world!"
print(mesage) # Misspelled 'message'Error: NameError: name 'mesage' is not defined
The Fix: Check your spelling carefully! Python is case-sensitive, so Message and message are different names.
Cause 2: Using a Variable Before Defining It
Code runs from top to bottom. You must create (define) a variable before you try to use it. Otherwise, you may see a NameError: name not defined.
Problem Code:
print(my_number) # Trying to use it first
my_number = 10 # Defining it secondError: NameError: name 'my_number' is not defined
The Fix: Always define your variables at the top, before you need them.
my_number = 10
print(my_number) # Correct!Cause 3: Variable Scope (Inside vs. Outside Functions)
Variables created inside a function only exist inside that function. This is called “local scope.” You cannot use them outside.
Problem Code:
def calculate_total():
total = 100 + 50 # 'total' is created inside the function
return total
calculate_total()
print(total) # Fails! 'total' does not exist out here.Error: NameError: name 'total' is not defined
The Fix: If you need a value from a function, you must return it and save it to a new variable outside.
def calculate_total():
total = 100 + 50
return total
# Save the returned value to a NEW variable outside
my_result = calculate_total()
print(my_result) # Correct!Summary
When you see a NameError, you are encountering a NameError: name not defined.
- Check for typos.
- Make sure you defined the variable above the line that failed.
- Make sure the variable isn’t “trapped” inside a function.





