3

我基本上想在调用函数时像字典一样扩展当前范围。

我记得在某个地方看到过这件事,但我不记得在哪里或如何做。

这是一个简单的例子

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)

我是在想象事情还是真的可以做到?

4

2 回答 2

6

您可以使用locals()(或globals()根据您的需要),它返回一个将变量名称映射到值的字典。

bar(**locals())
于 2011-08-09T20:29:19.500 回答
3

如果 foo 是这样写的

def foo(**kwargs):
    bar(**kwargs)

除了您发布的其他两个示例更好之外,扩展所有本地人是一个坏主意。

于 2011-08-09T20:32:58.633 回答