Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Python intermedio para IA, Unidad 4 — Programación funcional aplicada a IA, 4.2 — Funciones puras ·

Efectos secundarios

Efectos secundarios

Introducción

En la programación funcional, las funciones puras son fundamentales. Sin embargo, incluso estas tienen efectos secundarios que pueden afectar significativamente a tu código y a los modelos de inteligencia artificial (IA). Un efecto secundario en este contexto se refiere a cualquier acción o cambio en el estado del programa que no es parte directa de la lógica de la función. Estos efectos son críticos para entender e implementar correctamente las funciones puras y mantener un código limpio, legible y funcional.

Explicación principal

Las funciones puras deben cumplir con tres propiedades principales:

  1. Determinismo: La salida debe ser siempre la misma dado el mismo conjunto de entradas.
  2. Independencia del estado: No deben modificar ningún estado externo ni dependan de ningún estado en sí mismos.
  3. No tienen efectos secundarios.

Ejemplos y código

Considera una función pura que calcula el factorial de un número:

def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n - 1)

Esta función es pura porque siempre produce la misma salida para la misma entrada, no tiene efectos secundarios y no modifica ningún estado externo.

Sin embargo, aquí hay un ejemplo de una función que no es pura:

import datetime

def log_mensaje(mensaje):
    print(f"{datetime.datetime.now()} - {mensaje}")

Esta función imprime el mensaje con la fecha y hora actual, lo cual genera un efecto secundario.

Errores típicos / trampas

  1. Acceso a variables globales:
   global_var = "original"

   def modify_global():
       global_var = "modified"
       print(global_var)

   modify_global()

Aunque modify_global no modifica la variable global directamente, el uso de la palabra clave global en sí mismo puede ser considerado un efecto secundario.

  1. Imprimir a consola:
   def print_message(message):
       print(f"Mensaje: {message}")

Aunque este no modifica variables globales, el hecho de que imprima a la consola es un efecto externo.

  1. Acceso a archivos o bases de datos:
   import json

   def read_file(file_path):
       with open(file_path, 'r') as file:
           return json.load(file)

Esta función lee desde un archivo, lo cual es un efecto secundario.

Checklist accionable

  1. Revisa todas tus funciones para identificar si generan efectos secundarios.
  2. Identifica y elimina o encapsula cualquier acción que cambie el estado del programa.
  3. Evita usar variables globales dentro de las funciones puras.
  4. Mantén la lógica interna de cada función lo más independiente posible del entorno externo.
  5. Implementa un sistema de logging para monitorear y documentar efectos secundarios inevitables.

Cierre

Siguientes pasos

  • Reescribe funciones que generen efectos secundarios en términos puras: Divide la lógica en varias funciones sin efectos secundarios.
  • Usa un lenguaje o biblioteca que soporte programación funcional: Esto facilitará el desarrollo de funciones puras y evitará errores comunes relacionados con los efectos secundarios.
  • Documenta claramente cualquier efecto secundario inevitable en tu código: Esto hará más fácil la comprensión y mantenimiento del código.

Al mantener tus funciones puras, mejorarás la calidad de tu código y facilitarás la implementación de modelos de IA robustos.

Contacto

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