Les fonctions partielles Python sont appelées par les utilisateurs via le module functools.

Application partielle de fonction

Lorsqu'une fonction est exécutée, elle doit être appelée avec tous les paramètres nécessaires. Cependant, il arrive parfois que des paramètres soient connus à l'avance avant l'appel de la fonction. Dans ce cas, un ou plusieurs paramètres d'une fonction peuvent être prédéfinis, de sorte que la fonction puisse être appelée avec moins de paramètres.

Une fonction partielle prend la fonction à curryfier comme premier argument de la fonction partial(), et les arguments de la fonction d'origine sont passés comme arguments suivants à partial(), sauf si des arguments nommés sont utilisés.

Une description verbale peut ne pas suffire pour comprendre comment les fonctions partielles sont utilisées, alors illustrons avec un exemple courant. Dans cet exemple, nous implémentons une fonction modulo qui, pour l'entier 100, obtient le reste de 100%m pour différentes valeurs 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

Étant donné que les exemples vus précédemment utilisent généralement l'addition ou la multiplication, ils ne parviennent pas à transmettre le problème de position des arguments d'une fonction partielle, ce qui peut facilement créer la fausse impression que le deuxième argument de partial est aussi le deuxième argument de la fonction d'origine. C'est pourquoi je choisis ici mod pour l'expliquer.

Dans le cas d'arguments nommés, vous n'avez pas besoin de suivre les positions ni le nombre d'arguments de la fonction d'origine. Regardons un autre exemple ci-dessous, qui montre comment effectuer des conversions entre différentes bases numériques.

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

Ces applications des fonctions partielles peuvent sembler simples, mais elles sont très utiles. Elles peuvent suivre efficacement le principe DRY et économiser les coûts de programmation.

Réimprimé depuis Pythoner

Lien de l'article : http://www.pythoner.com/54.html