在Python中使用当前作用域作为kwargs

3 投票
2 回答
591 浏览
提问于 2025-04-16 23:14

我基本上是想在调用一个函数的时候,像扩展字典那样扩展当前的作用域。

我记得在某个地方见过关于这个的内容,但我现在想不起来在哪里看到的,也不知道怎么做。

这里有一个简单的例子

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())

撰写回答