Bonjour,
J'ai besoin d'une confirmation sur un comportement d'une fonction et ses paramètres par défaut. Comme je ne sais pas comment appeler ce comportement, je ne sais pas trop où chercher sur la toile une explication.
Bref voilà une fonction fabrique:
Et voici un exemple d'utilisation:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 def factory(): _name = "kango" def hello(name=_name): print "hello",name return hello
J'interprète ceci de la façon suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 >>> myfunc=factory() >>> myfunc() hello cedric >>> _name Traceback (most recent call last): File "<stdin>", line 1, in ? NameError: name '_name' is not defined
l'écriture
est interprété exactement comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part def hello(name=_name):
Comme s'il y avait une "résolution" (mot peut être mal choisi) non pas à l'exécution de la fonction mais lors de la déclaration de celle ci.
Code : Sélectionner tout - Visualiser dans une fenêtre à part def hello(name="kango"):
Ca tombe bien, ce comportement m'arrange énormément mais j'aimerais le comprendre mieux avant de m'en servir. J'ai isolé le comportement sur un cas simple mais je me pose la question car je suis en train d'écrire une métaclasse (ma première).
Que pouvez vous me dire sur ce comportement ?
Merci d'avance pour vos réponses![]()
Partager