Funciones parciales#

En algunos casos de uso, puede ser necesario recopilar una función junto con algunos parámetros en una variable para ejecutarla más tarde. La función partial() de functools permite hacer esto.

from functools import partial

Para demostrarlo, definimos una función de ejemplo.

def compute_sum(a, b):
    return a + b

Luego podemos almacenar el objeto partial de esa función en combinación con los parámetros en una variable.

sum_of_3_and_4 = partial(compute_sum, 3, 4)

Este objeto es invocable.

sum_of_3_and_4()
7

Mantener parámetros sin establecer#

También es posible especificar solo parcialmente los parámetros.

sum_of_3_and_b = partial(compute_sum, 3)
sum_of_3_and_b(9)
12

Pasar argumentos de palabra clave#

También funciona con argumentos de palabra clave.

sum_of_a_and_4 = partial(compute_sum, b=4)
sum_of_a_and_4(5)
9
sum_of_a_and_4(a=1)
5

Ejercicio#

Programa una función que determine la distancia euclidiana entre dos puntos. Después, usa partial para pasar un punto fijo y un bucle for para imprimir las distancias de una lista de puntos.

fixed_point = (1, 1, 1)
list_of_points = [(2,1,1), (1,1,3), (2,2,2)]