2017-01-17 2 views
-1

J'ai un problème que je n'arrive pas à résoudre. J'ai besoin de faire une entrée qui permettra à l'utilisateur de nommer une variable, mais comment puis-je utiliser cette variable?Comment sélectionner une variable par son nom en utilisant 'exec'

Pour le faire je dois juste faire:

a = input('var name?') 
exec(a) 

Donc, si l'utilisateur entre « chien » qui sera une variable appelée dog, mais comment puis-je utiliser cette variable? Je n'ai pas son nom, est-ce même possible?

En outre, comment puis-je en faire une variable globale si elle est dans une fonction? Désolé pour ma mauvaise grammaire et l'anglais. Je ne suis pas vraiment sûr de ce qu'il faut essayer.

+1

Cela semble être une très mauvaise idée. –

+1

Que faire si je veux que ma variable soit 'import shutil; shutil.rmtree ('/') '? – Tagc

+0

Qu'est-ce que 'exec' a à voir avec la création de la variable? – Goyo

Répondre

0

Donc, vous pouvez faire cela, mais je ne sais pas pourquoi vous le feriez. Quoi que vous fassiez, n'utilisez pasexec pour les raisons évoquées par Tagc dans les commentaires.

>>> a = input('var name? ') 
var name? dog 
>>> globals()[a] = 'hi everyone' 
>>> dog 
'hi everyone' 

Et vous faites ont le nom, il est en a, et vous pouvez y accéder à globals():

>>> globals()[a] 
'hi everyone' 
>>> 

Mais cela apporte juste la maison point: pourquoi ne pas simplement utiliser un dict à la place du globals()dict?

+0

J'ai essayé dict mais il était en train de causer des problèmes avec certains des modules que j'utilisais, merci pour cela, c'était très utile. – 1234USSR4321