我知道我可以“按名称”向全局命名空间添加一个变量,例如:
def getNewVar(name,val):
globals()[name]=val
问题是,我想在本地命名空间中执行此操作。我已经尝试过使用locals()
而不是失败globals()
。可能有人想知道为什么我会做这样的事情。好的,在我的用例中,函数的参数实际上是一个字典,我想做类似的事情:
def processDictEntries(dict):
for varname in dict.keys():
locals()[varname]=dict[varname] # won't work, of course
这样,在函数的更下方,我不必继续输入
result1=dict['var1']+5.
result2=dict['var2']*dict['var7']
一遍又一遍地。我可以打字
result1=var1+5
result2=var2*var7
而且,如果有一种方法可以像我写的那样在一个小循环中执行此操作,那么我不必这样做:
var1=dict['var1']
var2=dict['var2'] etc.
任何一个。我真的只是在寻找代码的经济性;这是一本大字典。
顺便说一句,字典的条目永远不会改变;它是严格输入的。而且,是的,我知道如果输入字典缺少函数所需的变量之一,我会遇到麻烦,但我认为可以处理。谢谢!