2010-10-25 14 views
1

C'est quelque chose que je remets en question depuis un certain temps. Comment créer une variable au moment de l'exécution, comme indiqué par la valeur d'une autre variable. Ainsi, par exemple, le code demande à l'utilisateur d'entrer une chaîne. Une variable serait alors créée nommée après cette chaîne avec la valeur par défaut "default". Est-ce seulement possible?Créer une nouvelle variable comme nom d'entrée dans Python?

+2

Qu'essayez-vous d'accomplir? – knitti

+2

Quoi qu'il essaie d'accomplir, cette approche est fausse. Utilisez un 'dict' (ou une autre collection appropriée - mais si vous voulez utiliser une chaîne, vous voulez probablement un' dict'), point. – delnan

+0

Les internes Python sont si transparents qu'il est tentant de dire comment faire cela, mais beaucoup plus intéressant serait de trouver un cas où c'est une bonne idée. – Thomas

Répondre

4

C'est possible, mais ce n'est certainement pas conseillé. Vous pouvez accéder à l'espace de nom global en tant que dict (c'est un dict interne) et y ajouter des entrées.

Si vous faisiez un interprète interactif, disons, pour faire des maths ou quelque chose comme ça. Vous passeriez en fait un dict à chaque eval() ou exec que vous pourriez ensuite réutiliser en tant qu'espace de noms local.

En tant que rapide, mauvais, par exemple, ne le faites pas à la maison:

g = globals() # get a reference to the globals dict 
g[raw_input("Name Please")] = raw_input("Value Please") 
print foo 

Run qui, il va retraçage sauf si vous fournissez « foo » à la première invite.