Retour aux quiz
Débutant
Paramètre de fonction avec valeur par défaut (4)
Ce code lève-t-il une erreur ?
quiz.py
1
def f(x=[]):2
x.append(1)3
return x4
5
print(f(), f())Réponses possibles
A[1], [1]
B[1], [1, 1]
C[1, 1] [1, 1]
D[], []
Explication
La bonne réponse est enfaite [1, 1] [1, 1]. En Python, une valeur par défaut comme x=[] est créée une seule fois, donc les deux f() partagent la même liste []. Chaque appel à f() ajoute donc à cette même liste [] : d'abord [1], puis [1, 1]. Mais quand on fait print(f(), f()), Python exécute d'abord les 2 appels, puis affiche leur résultat. Comme les 2 renvoient [1, 1], on obtient 2 fois [1, 1]. On peut vérifier ça en faisant a = f(); b = f(); print(a, b) qui affichera aussi [1, 1] [1, 1].