SolveConPython

NameError: variable no definida en Python

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ó?

  • resultado nunca fue definida
  • Python no puede adivinar su valor

Caso común 1: Usar una variable antes de definirla

total = precio + impuesto
precio = 100
impuesto = 21

❌ Error porque precio e impuesto se usan antes de existir.

Solución

precio = 100
impuesto = 21
total = precio + impuesto

👉 En Python, el orden importa.

Caso común 2: Error tipográfico en el nombre

contador = 5
print(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 = 10
print(resultado)

❌ Error porque:

  • resultado existe solo dentro de la función

Solución correcta

def calcular():
return 10
resultado = 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 math
print(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

  1. Define variables antes de usarlas
  2. Revisa cuidadosamente los nombres
  3. Evita errores tipográficos
  4. Entiende el alcance de las variables
  5. 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 + impuesto
total = 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