2015-04-23 86 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

好的,謝謝。 –

相關問題