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 x
4
 
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].