Retour aux quiz
Débutant

Piège des arguments mutables par défaut (2)

Que va afficher ce code ?

quiz.py
1
def add_item(item, items=[]):
2
    items.append(item)
3
    return items
4
 
5
print(add_item(1))
6
print(add_item(2))

Réponses possibles

A[1, 2], [1, 2]
B[1, 2], [1]
C[1], [1, 2]
D[1], [2]

Explication

Au premier appel de la fonction, items est vide donc la fonction renvoie [1]. Au second appel, items=[1] donc la fonction renvoie [1, 2]. C'est comme ça que Python gère les paramètres de fonction qui sont des objets mutables avec une valeur par défaut !