Sobes.tech
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 ajoute 1.
  • Lors du second appel func(2), la même liste est utilisée, maintenant [1], et on y ajoute 2.
  • 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 ajoute 4.

Ainsi, chaque impression affichera l'état actuel de l'argument mutable par défaut, qui conserve ses modifications entre les appels.