Senior
Que affichera chaque print dans une fonction avec un argument mutable par défaut?
sobes.tech IA
Réponse de l'IA
Dans les langages où les fonctions peuvent avoir des arguments par défaut mutables (modifiables), comme en Python, les valeurs par défaut sont initialisées une seule fois lors de la définition de la fonction, et non à chaque appel. Cela signifie que si l'argument par défaut est un objet mutable (par exemple, une liste ou un dictionnaire), les modifications apportées à cet objet persistent entre les appels.
Exemple en Python :
def func(a, lst=[]):
lst.append(a)
print(lst)
func(1) # Affiche : [1]
func(2) # Affiche : [1, 2]
func(3, ['x']) # Affiche : ['x', 3]
func(4) # Affiche : [1, 2, 4]
Explication :
- Lors du premier appel
func(1), la liste par défaut[]est utilisée, à laquelle on ajoute1. - Lors du second appel
func(2), la même liste est utilisée, maintenant[1], et on y ajoute2. - Lors de l'appel
func(3, ['x']), une nouvelle liste['x']est passée, donc les modifications n'affectent pas la valeur par défaut. - Lors du dernier appel
func(4), la liste par défaut est à nouveau utilisée, qui contient maintenant[1, 2], et on y ajoute4.
Ainsi, chaque impression affichera l'état actuel de l'argument mutable par défaut, qui conserve ses modifications entre les appels.