如果我理解正確,您希望用戶輸入的文本成爲Python代碼中變量的名稱。所以,如果我給我的名字'克里斯'應該有一個變量創建所謂的克里斯。
我能看到這樣做的唯一原因是,你正在試圖讓你的程序從你的代碼中已經存在的變量中選擇,否則我們賦值給變量的值是什麼?
我可以看到四種方法來做到這一點。
1)使用字典:
data_dictionary = dict(Chris=1, Dave=2, John=3)
default_value = 0
var = input('Enter a name: ')
# Get
new_value = data_dictionary.get(var, default_value)
# Set
data_dictionary[var] = default_value
2)使用對象(如果你是更好的編寫這些代碼放到一個類):
class DataClass(object):
default_value = 0
data_class = DataClass()
var = input('Enter a name: ')
# Get
new_value = getattr(data_class, var, data_class.default_value)
# Set
setattr(data_class, var, data_class.default_value)
3)使用exec
(https://docs.python.org/2.0/ref/exec.html) (警告:如果使用不當,有危險)
default_value = 0
var = input('Enter a name: ')
# Get (with highly inadequate amount of error catching)
exec('new_value = {}'.format(var))
# Set
exec('{0} = {1}'.format(var, default_value))
4)使用eval
(Warni NG:可笑的危險,特別是如果用戶不能100%的信任,這可以用來做用戶幾乎所有的東西)的這些
Actually I changed my mind, never use eval.
希望一個是有幫助的。
告訴我們您正在嘗試解決的較大問題。用變量名稱混淆並不是一個好主意。你可能想要一本字典。 –
這聽起來有點像XY問題。 –
呃,不,我不需要字典。我只是想知道我們是否可以創建一個採用有效變量名稱並初始化相同名稱變量的函數。由於我們不能使用變量作爲參數,我們應該傳遞一個字符串。但是我們可以將字符串轉換爲變量。 –