Exercice 17 / 100

Valeurs par défaut

Fonction `puissance(n, exp=2)` qui retourne n^exp

Une valeur par défaut permet de rendre un paramètre optionnel : si l'appelant ne le fournit pas, la valeur par défaut est utilisée.

Syntaxe

def nom(param_obligatoire, param_optionnel=valeur_par_defaut): ...

Les paramètres avec valeur par défaut doivent venir après ceux sans valeur par défaut.

def f(a, b=1): ✅

def f(a=1, b): ❌ SyntaxError

Exemple

def puissance(n, exp=2): return n ** exp
puissance(3) → 9 (exp prend la valeur par défaut 2 → 3²) puissance(2, 10) → 1024 (exp=10 explicitement → 2¹⁰) puissance(5, exp=3) → 125 (forme nommée, plus lisible)
Un paramètre à valeur par défaut devient optionnel : sans rien préciser à l'appel, il prend la valeur écrite dans la définition

Arguments positionnels vs nommés

positionnel : passé dans l'ordre des paramètres f(5, 10, 'rouge')
nommé : passé avec param=valeur (peu importe l'ordre) f(taille=10, couleur='rouge', x=5)

Mélange autorisé, mais positionnels d'abord puis nommés :

f(5, couleur='rouge', taille=10) ✅

⚠ Piège classique : valeur par défaut mutable

Ne jamais mettre [] ou {} comme valeur par défaut, car la liste est partagée entre tous les appels :

def ajoute(x, liste=[]): # ❌ piège liste.append(x) return liste
ajoute(1) → [1] ajoute(2) → [1, 2] (on attendait [2] !)

La bonne forme

def ajoute(x, liste=None): if liste is None: liste = [] liste.append(x) return liste
exercise.py

Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →