Python - Librería Functools

############################################################## #Ejemplos en Python usando la librería functools. #1. Utilizar `partial` para crear una función con argumentos predefinidos: import functools # define una función con dos argumentos def suma(a, b): return a + b # utiliza partial para crear una nueva función con el argumento 'a' predefinido como 5 suma_con_5 = functools.partial(suma, a=5) # llama a la función con el argumento 'b' específico (3) resultado = suma_con_5(b=3) # imprime el resultado (8) print(resultado) #2. Utilizar `reduce` para aplicar una función a todos los elementos de una lista: import functools # define una lista de números numeros = [1, 2, 3, 4, 5] # utiliza reduce para sumar todos los números en la lista suma_total = functools.reduce(lambda x, y: x + y, numeros) # imprime la suma total (15) print(suma_total) #3. Utilizar `cached_property` para cachear el resultado de un método: import functools # define una clase con un método costoso en términos de procesamiento class Ejemplo: @functools.cached_property def resultado_costoso(self): # realiza algún procesamiento costoso aquí return 42 # crea una instancia de la clase y llama al método varias veces ejemplo = Ejemplo() print(ejemplo.resultado_costoso) print(ejemplo.resultado_costoso) print(ejemplo.resultado_costoso) #4. Utilizar `wraps` para decorar una función sin perder su información original: import functools # define una función decoradora que imprime un mensaje antes y después de la función decorada def mi_decorador(funcion): @functools.wraps(funcion) def wrapper(*args, **kwargs): print('Antes de la función') resultado = funcion(*args, **kwargs) print('Después de la función') return resultado return wrapper # define una función que será decorada @mi_decorador def mi_funcion(): print('En la función') # llama a la función decorada mi_funcion() #5. Utilizar `total_ordering` para definir los métodos de comparación en una clase: import functools # utiliza total_ordering para definir los métodos de comparación en la clase @functools.total_ordering class MiClase: def __init__(self, valor): self.valor = valor def __eq__(self, otro): return self.valor == otro.valor def __lt__(self, otro): return self.valor < otro.valor # crea dos instancias de la clase y compáralas instancia1 = MiClase(1) instancia2 = MiClase(2) print(instancia1 == instancia2) print(instancia1 < instancia2)

Geogebra Python