La función no está definida Error en Python
- Evite llamar a una función antes de la declaración en Python
- Evite el uso de nombres de variables o funciones mal escritos en Python
- Evite el uso de módulos integrados sin importar en Python
- Solucionar problemas de variables fuera del alcance en Python
Aprenderemos con esta explicación cuál es el caso cuando un programa de Python muestra un error como un Error de nombre: el nombre '<nombre de la función>' no está definido
a pesar de que la función está presente en el script.
También aprendemos qué sucede cuando usamos variables mal escritas o una función incorporada sin importar y cómo evitar estos errores en Python.
Evite llamar a una función antes de la declaración en Python
Hay muchas razones para obtener el NameError: la función no está definida
en Python, y discutiremos la razón más común para obtener este error. Cuando llamamos a la función antes de definirla en nuestro programa, el intérprete de Python no podrá encontrar la definición de la función.
En ese caso, la función no se verá y el intérprete de Python aún no ha encontrado la definición de la función. Por lo tanto, el intérprete de Python se confundirá y arrojará un error, lo que significa que la función no se ha definido de acuerdo con el intérprete.
Veamos un ejemplo rápido de esto; en este programa, hemos escrito una declaración de llamada antes de definir una función. Dado que el intérprete ejecuta el programa de Python línea por línea, se encuentra con una llamada de función particular cuando comienza a ejecutarse con la primera línea, pero no sabe qué es Hola()
.
Hello()
def Hello():
print("I will never be called")
Cuando ejecutamos este script de Python, se confundirá acerca de si es una función, y el intérprete de Python se detendrá y arrojará un error. Esto se debe a que la definición de esta función está presente después de la llamada a la función; es por eso que nunca podemos invocar o llamar a una función antes de definirla.
NameError: name 'Hello' is not defined
Necesitamos definir la función antes de llamarla para corregir este error.
Evite el uso de nombres de variables o funciones mal escritos en Python
Otra razón para obtener este error es cuando un usuario comete errores al definir la ortografía correcta de una función; es por eso que el usuario recibe este tipo de error. Python distingue entre mayúsculas y minúsculas, por lo que las mayúsculas y las minúsculas serán funciones diferentes.
Examinamos un ejemplo para demostrar cómo actúa el intérprete cuando obtiene una variable mal escrita.
Orange = "orange"
for i in orange:
print(i)
Producción :
NameError: name 'orange' is not defined
Cuando ejecutamos el script de Python, obtenemos un error que dice 'naranja' no está definido
, pero esta vez no cometimos un error de ortografía, entonces, ¿por qué obtenemos este error a pesar de que hemos definido esta variable? Esto se debe a que definimos esa variable que comienza con una letra mayúscula y está tratando de acceder a ella con minúsculas.
El mismo escenario se aplicará con la función. Funciona si anulamos la variable Orange
con orange
.
orange = "orange"
for i in orange:
print(i)
Producción :
o
r
a
n
g
e
Evite el uso de módulos integrados sin importar en Python
Digamos que estás escribiendo un programa en Python, y si quieres usar alguna de las funciones integradas como print()
, entrada()
, etc., puedes usarla en tu código. ¿Qué sucede cuando necesita usar una función que no está incorporada en Python pero está presente en ciertos módulos?
Para usar una función que es parte de ciertos módulos, primero debe importar ese módulo a su programa de Python. Algunos principiantes fallan cuando intentan usar una función de un módulo en lugar de importar ese módulo específico; mira un ejemplo.
En este programa, el usuario intenta generar valores aleatorios, pero cuando el usuario ejecuta este código, obtiene el mismo error que comentamos. La razón es donde falla el usuario, que intenta acceder a la función random()
sin importar su módulo que es random
.
Randome_Values = random.random()
print(Randome_Values)
Producción :
NameError: name 'random' is not defined
Funciona cuando el usuario importa un módulo aleatorio
en el script de Python.
import random
Randome_Values = random.random()
print(Randome_Values)
Producción :
0.07463088966802744
A veces, los usuarios escriben el módulo de Python por sí mismos, pero enfrentan el problema y obtienen el mismo error.
Esto se debe a que el usuario está tratando de llamar a una función desde otro archivo después de importar una clase, pero es posible que el usuario no haya guardado ese archivo donde se define la función, razón por la cual el usuario recibe este error. Así que asegúrese de guardarlo antes de llamar a esta función.
Solucionar problemas de variables fuera del alcance en Python
Otra razón por la que la mayoría de los principiantes fallan es cuando intentan acceder a una variable fuera del alcance y obtienen el mismo error. Veamos un ejemplo donde obtendremos una mejor comprensión.
def take_order():
orders = input("Enter your orders and separate it using comma :").split(",")
return orders
def Delete_Orders():
deleted_orders = input("Enter your order name which you want to cancel :")
orders.remove(deleted_orders)
return orders
print(take_order())
print(Delete_Orders())
Cuando ejecutamos este script de Python, la función take_order()
funcionará correctamente, pero el error ocurre cuando llamamos a la función Delete_Orders()
para eliminar el pedido de la lista de pedidos
.
NameError: name 'orders' is not defined
Esto se debe a que la variable orders
está definida en la función take_order()
, y estamos intentando acceder a ella desde la función Delete_Orders()
. Es por eso que cuando el control de ejecución llega a donde estamos quitando el ítem de la lista de órdenes
; arroja un error porque estamos accediendo a él fuera del alcance.
Para solucionar este problema, debemos declarar una variable que almacene una cadena vacía, y el nombre de la variable sería “pedidos”. Después de eso, necesitamos usar la palabra clave global
, a la que llamamos variable pedidos
, para que sea reutilizable.
orders = ""
def take_order():
global orders
orders = input("Enter your orders and separate it using comma :").split(",")
return orders
def Delete_Orders():
deleted_orders = input("Enter your order name which you want to cancel :")
orders.remove(deleted_orders)
return orders
print(take_order())
print(Delete_Orders())
Producción :
Enter your orders and separate it using comma :pizza,drink,water
['pizza', 'drink', 'water']
Enter your order name which you want to cancel :water
['pizza', 'drink']
Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.
LinkedInArtículo relacionado - Python Error
- Administrar fallas de segmentación en Python
- Archivo <Stdin>, Línea 1, en <Módulo> Error en Python
- Arreglar AttributeError: el objeto 'generador' no tiene atributo 'siguiente' en Python
- Arreglar el comando cl.exe falló: no existe tal archivo o directorio en Windows
- Arreglar NameError: la variable no está definida en Python
- Arreglar Socket.Gaierror: [Errno 8] Nodename ni Servname proporcionado, o desconocido en Python