Fonctions partielles
Utiliser functools.partial
Fonctions partielles est une leçon Python Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Python Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Python Academy comprend 4 leçons au total.
Qu'est-ce qu'une fonction partielle ?
functools.partial crée une nouvelle fonction dont certains arguments d'une fonction existante sont déjà renseignés. C'est comme précharger des arguments afin de pouvoir appeler le résultat avec moins d'arguments.
Importez-la avec from functools import partial.
from functools import partial
def power(base, exp):
return base ** exp
square = partial(power, exp=2)
print(square(5))Renseigner les arguments positionnels
Les arguments positionnels transmis à partial remplissent les paramètres de la fonction de gauche à droite. Vous fournissez les arguments restants lorsque vous appelez la fonction partielle.
from functools import partial
def multiply(a, b):
return a * b
double = partial(multiply, 2)
print(double(10))
print(double(50))Renseigner les arguments nommés
Les arguments nommés donnés à partial deviennent des valeurs par défaut que vous pouvez encore remplacer au moment de l'appel.
from functools import partial
def greet(name, greeting='Hello'):
return greeting + ', ' + name
hola = partial(greet, greeting='Hola')
print(hola('Ada'))
print(hola('Bob', greeting='Hey'))Fonctions partielles avec les fonctions intégrées
Vous pouvez également créer des fonctions partielles à partir de fonctions intégrées. Ici, nous créons un analyseur d'entiers en base 2 à partir de int.
from functools import partial
binary = partial(int, base=2)
print(binary('1010'))
print(binary('1111'))Des fonctions de rappel plus claires
Les fonctions partielles sont idéales pour les fonctions de rappel lorsque vous devez transmettre une fonction sans argument ou à argument unique, mais souhaitez précharger un contexte.
from functools import partial
def log(level, message):
return '[' + level + '] ' + message
error = partial(log, 'ERROR')
print(error('disk full'))Fonctions partielles dans map
Une fonction partielle s'intègre parfaitement aux fonctions d'ordre supérieur comme map : elle fixe un argument tandis que l'autre varie pour chaque élément.
from functools import partial
def add(a, b):
return a + b
add10 = partial(add, 10)
print(list(map(add10, [1, 2, 3])))Examiner une fonction partielle
Un objet de fonction partielle expose la fonction enveloppée via .func, les arguments positionnels fixés via .args et les arguments nommés fixés via .keywords.
from functools import partial
def f(a, b, c):
return (a, b, c)
p = partial(f, 1, c=3)
print(p.func.__name__)
print(p.args)
print(p.keywords)Empiler des fonctions partielles
Vous pouvez créer une fonction partielle à partir d'une autre fonction partielle et ajouter progressivement d'autres arguments fixes.
from functools import partial
def volume(l, w, h):
return l * w * h
base = partial(volume, 2)
slab = partial(base, 3)
print(slab(4))Fonction partielle ou lambda
Une lambda peut accomplir la même tâche, mais partial est souvent plus clair pour fixer des arguments et expose la fonction enveloppée à des fins d'introspection.
from functools import partial
def power(base, exp):
return base ** exp
cube_p = partial(power, exp=3)
cube_l = lambda b: power(b, 3)
print(cube_p(2), cube_l(2))Un exemple concret : l'arrondissement
Créez une fonction d'arrondissement à deux décimales en créant une fonction partielle à partir de la fonction intégrée round.
from functools import partial
round2 = partial(round, ndigits=2)
print(round2(3.14159))
print(round2(2.71828))partialmethod pour les classes
La fonction associée functools.partialmethod fait la même chose pour les méthodes à l'intérieur d'une définition de classe : elle renseigne à l'avance les arguments d'une méthode.
from functools import partialmethod
class Light:
def set(self, state):
self.state = state
return state
on = partialmethod(set, True)
off = partialmethod(set, False)
l = Light()
print(l.on())
print(l.off())Vérification rapide
Que fait functools.partial ?
Récapitulatif : fonctions partielles
Vous avez appris que functools.partial :
- Crée une nouvelle fonction avec certains arguments préremplis (positionnels ou nommés).
- Permet de remplacer les valeurs nommées prédéfinies au moment de l'appel.
- Est idéale pour les fonctions de rappel,
mapet la réduction des répétitions. - Expose
.func,.argset.keywords, et possède une variante de méthode appeléepartialmethod.
from functools import partial
add = lambda a, b: a + b
plus1 = partial(add, 1)
print(plus1(41))Questions Fréquemment Posées
La leçon « Fonctions partielles » est-elle gratuite ?
Oui — le texte complet de « Fonctions partielles » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Python Academy, passe à CoddyKit PRO. Le cours Python Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Fonctions partielles » ?
Utiliser functools.partial Tu pratiques Python Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Python Academy ?
Aucune expérience préalable n'est requise. Python Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Fonctions partielles » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Python Academy ?
Oui. Chaque leçon Python Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Fonctions de première classe
- Fermetures et variables libres
- nonlocal et état mutable
- Fonctions partielles