可以将关键字参数扩展与常规关键字参数相结合吗



我想做的是:

logged_in = {
    'logged_in': True,
    'username' : 'myself',
    }
print render_template('/path/to/template.html',
    **logged_in,
    title = 'My page title',
    more  = 'even more stuff',
    )

但这行不通。有没有办法将字典扩展和显式参数结合起来,或者我需要在第二个字典中定义显式参数,合并两者,然后扩展结果?

关键字扩展必须在末尾。

print render_template('/path/to/template.html',
    title = 'My page title',
    more  = 'even more stuff',
    **logged_in
)

是的,你只需要把它倒过来。关键字展开必须在末尾。

def foo(a,b,c,d):
   print [a,b,c,d]
kwargs = {'b':2,'c':3}
foo(1,d=4,**kwargs)
# prints [1, 2, 3, 4]

上述操作之所以有效,是因为它们的顺序正确,即未命名的参数、命名的参数,然后是关键字展开(而*表达式可以在命名的参数之前或之后,但不能在关键字展开之后)。然而,如果你要这样做,那将是一个语法错误:

 foo(1,**kwargs,d=4)
 foo(d=4,**kwargs,1)
 foo(d=4,1,**kwargs)

相关内容

  • 没有找到相关文章

最新更新