Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Python intermedio para IA, Unidad 3 — Funciones avanzadas, 3.1 — Funciones como ciudadanos de primera clase ·

Pasar funciones como argumentos

Pasar funciones como argumentos

Introducción

En la programación avanzada, las funciones no son solo herramientas para realizar tareas específicas; también pueden ser tratadas y utilizadas de manera flexible. Una técnica poderosa que permite esta flexibilidad es pasar funciones como argumentos a otras funciones. Esta práctica es particularmente valiosa en el desarrollo de modelos de inteligencia artificial (IA) ya que nos permite definir comportamientos dinámicos e interactuar con algoritmos de manera más efectiva.

Explicación principal

La capacidad de pasar una función como argumento a otra función implica que la función recibirá esa función como valor y puede llamarla dentro de su cuerpo. Esto es especialmente útil en contextos donde necesitamos adaptar el comportamiento de una función basándonos en diferentes criterios o algoritmos.

A continuación, veremos un ejemplo simple para ilustrar esto:

def aplicar_funcion(funcion, valor):
    return funcion(valor)

# Definición de la función que recibirá como argumento
def cuadrado(x):
    return x * x

resultado = aplicar_funcion(cuadrado, 4)
print(resultado)  # Output: 16

En este ejemplo, aplicar_funcion recibe una función (cuadrado) y un valor (4). Luego, internamente, llama a la función cuadrado con el valor proporcionado.

Ejemplos adicionales

Utilizando una función que toma múltiples argumentos

def aplicar_funcion(funcion, *args):
    return funcion(*args)

# Definición de la función que recibirá múltiples argumentos
def suma(x, y):
    return x + y

resultado = aplicar_funcion(suma, 2, 3)
print(resultado)  # Output: 5

Usando una función anónima (lambda)

def aplicar_funcion(funcion, valor):
    return funcion(valor)

# Definición de la función anónima (lambda)
resultado = aplicar_funcion(lambda x: x * x, 4)
print(resultado)  # Output: 16

Errores típicos / trampas

Pasar funciones como argumentos puede llevar a errores comunes. A continuemos con algunos de los más frecuentes:

  1. Olvidar el paréntesis: Asegúrate de llamar a la función dentro del cuerpo de otra función si se trata de una función que toma argumentos.
    def aplicar_funcion(funcion, valor):
        return funcion(valor)
    
    # Incorrecto: Olvidar el paréntesis al llamar a la función anónima
    resultado = aplicar_funcion(lambda x: x * 2, 4)  # Error en tiempo de ejecución
    
    # Correcto: Llamar a la función dentro del cuerpo de otra función
    def cuadrado(x):
        return x * x
    
    resultado = aplicar_funcion(cuadrado, 4)
    print(resultado)  # Output: 16
  1. No inicializar variables: Si pasas una variable que no ha sido inicializada como función, obtendrás un error de tipo.
    def aplicar_funcion(funcion, valor):
        return funcion(valor)
    
    resultado = aplicar_funcion(no_definida, 4)  # Error: 'no_definida' no se define
    
    # Corrección: Definir la función antes de usarla
    def cuadrado(x):
        return x * x
    
    resultado = aplicar_funcion(cuadrado, 4)
    print(resultado)  # Output: 16
  1. No retornar correctamente: Si una función que recibe otra función como argumento no retorna el valor de la función interna, obtendrás un resultado incorrecto o None.
    def aplicar_funcion(funcion, valor):
        return funcion
    
    # No retorna el valor de la función interna
    resultado = aplicar_funcion(cuadrado, 4)
    print(resultado)  # Output: <function cuadrado at ...>
    
    # Corrección: Retornar el valor del resultado de la función interna
    def aplicar_funcion(funcion, valor):
        return funcion(valor)
    
    resultado = aplicar_funcion(cuadrado, 4)
    print(resultado)  # Output: 16

Checklist accionable

  • Verifica siempre los paréntesis: Asegúrate de que las funciones anónimas o definidas estén correctamente llamadas.
  • Inicializa variables: Si defines una función dentro del cuerpo de otra, asegura que la variable se inicialice correctamente como función.
  • Retorna correctamente: Verifica que la función que recibe una función como argumento retorne el valor correcto.

Siguientes pasos

  • Practica más ejemplos para entender cómo utilizar esta técnica en diferentes contextos.
  • Explora bibliotecas de Python como functools, que proporciona herramientas útiles para manipular funciones y parámetros.
  • Integra funciones anónimas (lambda) en tus proyectos para aumentar la flexibilidad de tu código.

En resumen, pasar funciones como argumentos es una técnica esencial para escribir código más flexible y reutilizable. Con un poco de práctica, podrás aprovechar al máximo esta poderosa característica de Python y mejorar significativamente el diseño de tus soluciones de inteligencia artificial.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).