Python

¿Por qué recibo ‘NameError: name X is not defined’ en Python? Aprende cómo solucionarlo

El error “NameError: name X is not defined” es uno de los más comunes en Python, especialmente entre quienes están comenzando a programar. Ocurre cuando intentas usar una variable, función u otro identificador que no ha sido definido previamente en el código.

En esta entrada, explicaremos qué significa este error, por qué ocurre y cómo solucionarlo paso a paso. Además, veremos ejemplos prácticos y buenas prácticas para evitarlo en el futuro.

¿Qué significa 'NameError: name X is not defined’?

En Python, el error 'NameError: name X is not defined' aparece cuando intentas utilizar un nombre (ya sea una variable, función o módulo) que el intérprete no reconoce porque no ha sido definido previamente en el ámbito actual del código. Esto es, no se ha definido o importado previamente para que el intérprete de Python la conozca.

Por ejemplo, si intentas imprimir una variable que no existe, obtendrás un NameError:

print(variable_inexistente)

Lo que producirá una salida del error en la consola como la que se muestra a continuación:

NameError: name 'variable_inexistente' is not defined

En este caso, la variable variable_inexistente no ha sido declarada antes de su uso, lo que provoca el error.

Causas comunes del error ‘NameError’

Este error se produce cuando intentamos acceder a un nombre que no existe en el contexto actual del código. Algunas de las causas más comunes incluyen:

Variable no definida

Intentar usar una variable que nunca ha sido declarada o que está fuera del alcance actual del código.

if True:
    x = 10

print(y)  # Error: 'y' no está definida

En este caso, la variable y nunca fue declarada antes de su uso, lo que genera el error.

Error tipográfico

A veces, el error se debe a un simple fallo al escribir el nombre de la variable o función.

mi_variable = 42

print(mi-varaible)  # Error tipográfico

Aquí se ha escrito mi-varaible en lugar de mi_variable, lo que causa el NameError.

Orden incorrecto en el código

Si intentas usar una variable antes de definirla, obtendrás este error.

print(valor)

valor = 100

En este caso, la variable valor se usa antes de ser declarada, lo que genera el error.

Falta de importaciones

Cuando se trabaja con módulos, es posible olvidar importar un módulo antes de usarlo.

math.sqrt(16)  # Error: el módulo 'math' no ha sido importado

Para corregirlo, asegúrate de importar el módulo antes de usarlo:

import math

print(math.sqrt(16))  # Correcto

Alcance incorrecto de variables

Si intentas acceder a una variable fuera de su ámbito de definición, también obtendrás este error.

def funcion_local():
    variable_local = 10

print(variable_local)  # Error: la variable no existe fuera de la función

La variable variable_local solo existe dentro de la función funcion_local(), por lo que intentar acceder a ella fuera de la función genera un NameError.

Cómo solucionar el error ‘NameError’

Para evitar este problema, sigue estas buenas prácticas al escribir tu código:

Define las variables antes de usarlas

Asegúrate siempre de que las variables estén definidas antes de utilizarlas.

mensaje = "Hola, mundo"

print(mensaje)  # Correcto

Revisa errores tipográficos

Verifica que los nombres de variables y funciones estén escritos correctamente.

edad_usuario = 25

print(edad_usuario)  # Correcto

Declara las variables en el orden correcto

Siempre define las variables antes de usarlas en el código.

valor = 100

print(valor)  # Correcto

Importa los módulos necesarios

Antes de utilizar funciones o clases de un módulo, asegúrate de importarlo correctamente.

import math

print(math.sqrt(25))  # Correcto

Usa variables dentro de su alcance

Si necesitas acceder a una variable definida dentro de una función, devuélvela como parte de su resultado.

def obtener_valor():
    variable_local = 10
    return variable_local

print(obtener_valor())  # Correcto

Conclusiones

El error “NameError: name X is not defined” puede parecer frustrante al principio, pero con un poco de atención y siguiendo las buenas prácticas mencionadas en esta entrada, podrás evitarlo fácilmente.

Nota: La imagen de este artículo fue generada utilizando un modelo de inteligencia artificial.

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez

Recent Posts

BG/BB: el modelo de CLV para compras en períodos discretos

Los dos artículos anteriores de la serie cubrieron BG/NBD, el modelo para negocios donde el…

7 horas ago

Por Qué las Contraseñas Largas son más Seguras que las Complejas

"Tu contraseña debe tener al menos 8 caracteres, una mayúscula, un número y un símbolo…

5 días ago

Gini, KS y AUC: Cómo Medir la Calidad de un Modelo de Credit Scoring

Cuando un analista de riesgo presenta un nuevo scorecard ante el comité de dirección, la…

1 semana ago

Curiosidad: De dónde vienen foo, bar y foobar

Si revisáis código o documentación de otros programadores, tarde o temprano os toparéis con dos…

2 semanas ago

BG/NBD + Gamma/Gamma: el modelo probabilístico para CLV en compras continuas

Los dos artículos anteriores cubrieron el CLV clásico —una fórmula útil pero que trata a…

2 semanas ago

Errores habituales al trabajar con DataFrames grandes en Pandas (y cómo evitarlos)

Hay un momento muy concreto en la vida de casi todo análisis: el código que…

3 semanas ago

This website uses cookies.