Las funciones parciales de Python son invocadas por el usuario mediante el módulo functools.
aplicación parcial
Cuando una función se ejecuta, debe llamarse con todos los parámetros necesarios. Sin embargo, a veces los parámetros pueden conocerse antes de que la función sea llamada. En este caso, uno o más parámetros de una función pueden estar disponibles de antemano, de modo que la función pueda llamarse con menos parámetros.
La función parcial toma la función objetivo como primer parámetro de la función partial(), y los parámetros de la función original se pasan sucesivamente como parámetros posteriores de partial(), a menos que se utilicen argumentos de palabra clave.
Puede que la descripción verbal no permita entender cómo se usan las funciones parciales, así que pongamos un ejemplo habitual para explicarlo. En este ejemplo, implementamos una función de módulo que, para el entero 100, obtiene el resto de 100 % m para diferentes valores de m.
from functools import partial def mod( n, m ): return n % m mod_by_100 = partial( mod, 100 ) print mod( 100, 7 ) # 2 print mod_by_100( 7 ) # 2
Como los ejemplos anteriores suelen usar la suma o la multiplicación para explicar, no se puede apreciar la cuestión de la posición de los parámetros en las funciones parciales, lo que fácilmente da la falsa impresión de que el segundo parámetro de partial también es el segundo parámetro de la función original. Por eso, aquí elijo mod para explicarlo.
En el caso de los argumentos de palabra clave, no es necesario ceñirse a la posición ni al número de parámetros de la función original. Veamos a continuación otro ejemplo, que trata de cómo realizar conversiones entre diferentes bases numéricas.
from functools import partial bin2dec = partial( int, base=2 ) print bin2dec( '0b10001' ) # 17 print bin2dec( '10001' ) # 17 hex2dec = partial( int, base=16 ) print hex2dec( '0x67' ) # 103 print hex2dec( '67' ) # 103
Estas aplicaciones de las funciones parciales parecen sencillas, pero tienen una gran utilidad: pueden aplicar muy bien el principio DRY y ahorrar costos de programación.
Vía Pythoner
Enlace de este artículo: http://www.pythoner.com/54.html