我有一个功能P()
。调用load_variables()
应该给P
变量x
。
load_variables
应该能够接受默认值作为关键字参数。
如何才能做到这一点?
我尝试了以下方法:
import inspect
def P():
x = 1
load_variables(x = 2)
return x
def load_variables(**kargs):
stack = inspect.stack()
try:
locals_ = stack[1][0].f_locals
finally:
del stack
for __k, __v in kargs.iteritems():
locals_[__k] = __v
print P() # => should print 2
这x = 1
条线实际上不应该在那里,因为我load_variables()
只想放出x
intoP
的范围。
还有另一种可能更好的方法来做到这一点吗?我想要的是:
- 变量有一个默认值,例如
x = 2
在上面的调用中load_variables()
。 - 我可以覆盖这些
load_variables
,例如,load_varibales()
可以访问变量字典,如果x
已经在这里,我们覆盖它,并溢出它x
而不是作为默认参数给出的那个。