在python中使用当前范围作为kwargs

时间:2011-08-09 20:25:52

标签: 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 个答案:

答案 0 :(得分:6)

您可以使用locals()(或globals(),具体取决于您的需要),它会返回将变量名称映射到值的字典。

bar(**locals())

答案 1 :(得分:3)

如果foo是这样编写的

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

除了你发布的其他两个例子更好,扩展所有当地人是一个坏主意。