Est-il possible de changer le comportement des variables global
et local
en Python lors de l'exécution?Est-il possible de faire en sorte que les locals() et globals() ressemblent à des valeurs par défaut
En Python, locals()
donne des références aux variables de la portée d'exécution actuelle, qui est un objet dict
.
>>> locals()
{'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', '__doc__': None, '__package__': None}
Est-il possible de remplacer cette référence retourné par locals()
à un defaultdict
, mais conserver les valeurs précédentes (une copie de locals()
) avant de le remplacer?
Je m'attendrais à ce que cela évite les exceptions UnboundLocalException
lors de l'utilisation de variables non initialisées et d'accéder à n'importe quel nom de variable dans la portée d'exécution (les variables non initialisées prendraient une valeur par défaut spécifiée).
J'ai essayé de modifier la valeur retournée par locals()
en la réaffectant aux locaux sans succès.
La même question vaut pour globals()
.