Qué significa y cómo solucionarlo paso a paso
Introducción
Estás escribiendo código, todo parece correcto… y de repente Python muestra esto:
NameError: name 'x' is not defined
La pregunta inmediata es:
¿cómo que no está definida si la acabo de usar?
En este artículo aprenderás:
- Qué es exactamente un
NameError - Por qué ocurre
- Los casos más comunes
- Cómo solucionarlo correctamente
- Cómo evitarlo en el futuro
Todo explicado de forma clara, práctica y en español.
¿Qué es un NameError en Python?
Un NameError ocurre cuando Python no reconoce un nombre que estás usando.
Ese nombre puede ser:
- Una variable
- Una función
- Un módulo
- Una constante
En pocas palabras:
Python te dice: “Ese nombre no existe (todavía)”.
Ejemplo básico de NameError
print(resultado)
❌ Error:
NameError: name 'resultado' is not defined
¿Qué pasó?
resultadonunca fue definida- Python no puede adivinar su valor
Caso común 1: Usar una variable antes de definirla
total = precio + impuestoprecio = 100impuesto = 21
❌ Error porque precio e impuesto se usan antes de existir.
Solución
precio = 100impuesto = 21total = precio + impuesto
👉 En Python, el orden importa.
Caso común 2: Error tipográfico en el nombre
contador = 5print(contadorr)
❌ Error:
NameError: name 'contadorr' is not defined
Una sola letra mal escrita es suficiente.
Solución
- Revisar cuidadosamente los nombres
- Usar nombres consistentes
Caso común 3: Variables fuera de su alcance (scope)
def calcular(): resultado = 10print(resultado)
❌ Error porque:
resultadoexiste solo dentro de la función
Solución correcta
def calcular(): return 10resultado = calcular()print(resultado)
Caso común 4: Olvidar importar un módulo
print(math.sqrt(16))
❌ Error:
NameError: name 'math' is not defined
Solución
import mathprint(math.sqrt(16))
Caso común 5: Usar funciones antes de definirlas
saludar()def saludar(): print("Hola")
❌ Error porque Python lee el archivo de arriba hacia abajo.
Solución
def saludar(): print("Hola")saludar()
Cómo leer correctamente un NameError
Mensaje típico:
NameError: name 'x' is not defined
Esto significa:
- Python buscó el nombre
x - No lo encontró en el contexto actual
- Detuvo la ejecución
👉 El nombre exacto que falla aparece en el mensaje.
Buenas prácticas para evitar NameError
- Define variables antes de usarlas
- Revisa cuidadosamente los nombres
- Evita errores tipográficos
- Entiende el alcance de las variables
- Importa módulos antes de usarlos
Tip útil para depurar:
print(locals())print(globals())
Ejemplo práctico completo
def calcular_precio(precio, impuesto): return precio + impuestototal = calcular_precio(100, 21)print(total)
Aquí:
- Todo está definido
- El orden es correcto
- No hay
NameError
Por qué este error es tan común
NameError aparece mucho porque:
- Python es sensible al orden
- El código se ejecuta línea por línea
- Los errores tipográficos son frecuentes
- El alcance de variables confunde al principio
Es totalmente normal encontrarlo al aprender.
Practicar errores de forma inteligente
Aprender Python implica:
- Cometer errores
- Leerlos
- Entenderlos
- Corregirlos
👉 En SolveConPython.com los ejercicios incluyen errores reales como NameError, para que aprendas a reconocerlos y solucionarlos sin frustración.
Conclusión
NameError significa una cosa muy concreta:
estás usando un nombre que Python no conoce.
Si aprendes a:
- Definir antes de usar
- Respetar el orden
- Cuidar los nombres
- Entender el alcance
este error dejará de bloquearte y se volverá fácil de solucionar.
Siguiente artículo de la serie
👉 ValueError: qué significa y cuándo aparece en Python