86 votes

Python : charger les variables d'une dictée dans l'espace de noms

Je veux utiliser un tas de variables locales définies dans une fonction, en dehors de la fonction. Donc je passe x=locals() dans la valeur de retour.

Comment puis-je charger toutes les variables définies dans ce dictionnaire dans l'espace de noms en dehors de la fonction, de sorte qu'au lieu d'accéder à la valeur en utilisant x['variable'], je pourrais simplement utiliser variable.

96voto

orodbhen Points 839

Plutôt que de créer votre propre objet, vous pouvez utiliser argparse.Namespace :

from argparse import Namespace
ns = Namespace(**mydict)

Pour faire l'inverse :

mydict = vars(ns)

19voto

Thava Points 388

Ceci est parfaitement valable pour importer des variables dans un espace local dans un autre espace local tant que l'on est conscient de ce qu'il/elle fait. J'ai souvent vu un tel code être utilisé de manière utile. Il suffit de faire attention à ne pas polluer l'espace mondial commun.

Vous pouvez faire ce qui suit :

adict = { 'x' : 'I am x', 'y' : ' I am y' }
locals().update(adict)
blah(x)
blah(y)

6voto

Radek Points 1908

L'importation de variables dans un espace de noms local est un problème valide et souvent utilisé dans les modèles de cadres.

Renvoie toutes les variables locales d'une fonction :

return locals()

Puis importez comme suit :

r = fce()
for key in r.keys():
   exec(key + " = r['" + key + "']")

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X