Bonjour à tous,
il y a un comportement de python que je ne comprend pas. J'aurais besoin de l'aide de plus calé que moi sur le sujet
Le code ci dessous
me renvoie
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 def f(p=[0]): print(p) p.append(1) f() f() f()
[0]
[0,1]
[0,1,1]
A chaque appel de la fonction, non seulement p n'est pas réinitialisé, mais en plus il garde la valeur qu'il avait lors de l'appel précédent.
Du coup, je ne comprend pas, je pensais qu'à la fin d'une fonction, toutes ses variables locales étaient éffacées. Pourquoi est-ce que lors de chaque appel, p pointe vers la même liste et pourquoi cette liste n'est pas effacée de la memoire à la fin de l'execution de f ?
De plus pourquoi la valeur par defaut p=[0] est-elle ignorée lors des second et troisième appel de f ?
Si on remplace p.append(1) par p=p+[1], le problème ne se pose plus. Le code renvoie bien [0],[0] et [0]
Merci d'avance
Partager