2015-04-23 88 views
1

我正在使用python,并想知道是否可以向用户询问变量的名称,然后使用该名称创建变量。例如:将用户输入设置为变量名称

my_name = input("Enter a variable name") #for example the user could input orange 
#code to set the value of my_name as a variable, say set it to the integer 5 
print(orange) #should print 5 if the user entered orange 

我知道它可以使用字典来完成,但我想知道这是否是可能的,而无需创建一个额外的对象。我正在使用python 3.谢谢。

回答

2

您可以使用一个调用返回globals()字典:locals()

input_name = raw_input("Enter variable name:") # User enters "orange" 
globals()[input_name] = 4 
print(orange) 

如果你不希望它被定义为一个全局变量,则可以使用:

input_name = raw_input("Enter variable name:") # User enters "orange" 
locals()[input_name] = 4 
print(orange) 
+0

谢谢,它的工作原理。但是,我总是必须用globals()来做这件事吗? –

+0

我不知道有什么比通过'globals()'或'locals()'更简单的方法来实现你所要求的。 – EvenLisle

+0

“本地人”不保证能够正常工作。 – Veedrac

1

如果你的代码在功能之外,你可以通过修改当地人来完成。

my_name = raw_input("Enter a variable name") # Plain input() in Python 3 
localVars = local() 
localVars[my_name] = 5 

如果你在一个函数中,它不能完成。 Python在依赖它的函数中执行各种优化,事先知道变量的名称 - 不能在函数中动态创建变量。

更多的信息在这里:https://stackoverflow.com/a/8028772/901641

+0

此答案在函数外部起作用。你说过在函数内部不可能做到这一点,但@EvenLisle的答案也适用于函数。你能解释为什么会发生这种情况吗? –

+0

@AbdulHadiKhan:你在修改全局变量。 Python比局部变量需要更长的时间来访问全局变量。 – ArtOfWarfare

+0

好的,谢谢。 –

相关问题