La función no está definida Error en Python

Salman Mehmood 21 junio 2023
  1. Evite llamar a una función antes de la declaración en Python
  2. Evite el uso de nombres de variables o funciones mal escritos en Python
  3. Evite el uso de módulos integrados sin importar en Python
  4. Solucionar problemas de variables fuera del alcance en Python
La función no está definida Error 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']
Salman Mehmood avatar Salman Mehmood avatar

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.

LinkedIn

Artículo relacionado - Python Error