在Python中使用当前作用域作为kwargs
我基本上是想在调用一个函数的时候,像扩展字典那样扩展当前的作用域。
我记得在某个地方见过关于这个的内容,但我现在想不起来在哪里看到的,也不知道怎么做。
这里有一个简单的例子
def bar(a, b, c, d, e, f):
pass
def foo(a, b, c, d, e, f):
# Instead of doing this
bar(a, b, c, d, e, f)
# or
bar(a=a, b=b, c=c, d=d, e=e, f=f)
# I'd like to do this
bar(**local_scope)
我是在想太多,还是这真的可以做到呢?
2 个回答
3
如果foo是这样写的
def foo(**kwargs):
bar(**kwargs)
除此之外,你发的另外两个例子更好,展开所有局部变量并不是个好主意。
6
你可以使用 locals()
(或者 globals()
,这要看你需要什么),这个函数会返回一个字典,字典里把变量名和它们的值对应起来。
bar(**locals())