如果我理解正确,您希望用户输入的文本成为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问题。 –
呃,不,我不需要字典。我只是想知道我们是否可以创建一个采用有效变量名称并初始化相同名称变量的函数。由于我们不能使用变量作为参数,我们应该传递一个字符串。但是我们可以将字符串转换为变量。 –