関数があります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
P
これを行う別の、おそらくより良い方法はありますか?私が欲しいのは:
- 変数にはデフォルト値があります。たとえば
x = 2
、上記の。への呼び出しload_variables()
などです。 load_variables
たとえば、load_varibales()
変数の辞書にアクセスできる場合、これらを上書きできます。x
すでにここにある場合は、上書きして、x
デフォルトの引数として指定されたものの代わりにこれをスピルします。