我有一个功能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()只想放出xintoP的范围。
还有另一种可能更好的方法来做到这一点吗?我想要的是:
- 变量有一个默认值,例如
x = 2在上面的调用中load_variables()。 - 我可以覆盖这些
load_variables,例如,load_varibales()可以访问变量字典,如果x已经在这里,我们覆盖它,并溢出它x而不是作为默认参数给出的那个。