Manejo de la excepción NameError en Python

Requisitos previos: manejo de excepciones de Python

Hay varias excepciones estándar en Python y NameError es una de ellas. NameError se genera cuando el identificador al que se accede no está definido en el ámbito local o global. Las causas generales por las que se genera NameError son:

1. Funciones integradas mal escritas:

En el siguiente código de ejemplo, la declaración de impresión está mal escrita, por lo que se generará NameError.

Python3

geek = input()
print(geek)

Producción : 

NameError: name 'print' is not defined

2. Usando variables no definidas:

Cuando se ejecuta el siguiente programa, NameError se generará ya que la variable geek nunca se define.

Python3

geeky = input()
print(geek)

 
Producción : 

NameError: name 'geek' is not defined

3. Definición de la variable después del uso:

En el siguiente ejemplo, aunque la variable geek está definida en el programa, se define después de su uso. Dado que Python interpreta el código de arriba a abajo, esto generará NameError

Python3

print(geek)
geek = "GeeksforGeeks"

 
Producción : 

NameError: name 'geek' is not defined

4. Uso incorrecto del alcance:

En el siguiente programa de ejemplo, la variable geek se define dentro del alcance local de la función de asignación. Por lo tanto, no se puede acceder globalmente. Esto plantea NameError.

Python3

def assign():
    geek = "GeeksforGeeks"
 
assign()
print(geek)

 
Producción : 

NameError: name 'geek' is not defined

Manejo de NameError

Para manejar específicamente NameError en Python, debe mencionarlo en la declaración de excepción. En el siguiente código de ejemplo, si solo se genera NameError en el bloque de prueba, se imprimirá un mensaje de error en la consola.

Python3

def geek_message():
    try:
        geek = "GeeksforGeeks"
        return geeksforgeeks
    except NameError:
        return "NameError occurred. Some variable isn't defined."
 
print(geek_message())

Producción : 

NameError occurred. Some variable isn't defined.

Publicación traducida automáticamente

Artículo escrito por z0o0p y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *