gpt4 book ai didi

python - 将变量 "by name"添加到本地命名空间

转载 作者:行者123 更新时间:2023-12-04 17:00:34 26 4
gpt4 key购买 nike

我知道我可以“按名称”向全局命名空间添加一个变量,例如:

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.

任何一个。我真的只是在寻找代码的经济性;这是一本大字典。

顺便说一句,字典的条目永远不会改变;它是严格输入。而且,是的,我知道如果输入字典缺少函数所需的变量之一,我会遇到麻烦,但我认为可以解决。谢谢!

最佳答案

如果您可以更改调用函数的方式:

def processDictEntries(var1=None,var2=None,**kwargs):
#do stuff with var1,var2 ...

然后将函数调用为:
processDictEntries(**dict)

当然,如果你不能这样做,你可以随时使用 processDictEntries作为包装:
def _processDictEntries(var1=None,var2=None,**kwargs):
...

def processDictEntries(d):
return _processDictEntries(**d)

作为旁注,将变量命名为 dict 并不是一个好主意。就像你隐藏内置函数一样

关于python - 将变量 "by name"添加到本地命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16091926/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com