我想做的是:
logged_in = {
'logged_in': True,
'username' : 'myself',
}
print render_template('/path/to/template.html',
**logged_in,
title = 'My page title',
more = 'even more stuff',
)
但这并不奏效。有没有办法将字典扩展与显式参数结合起来,还是我需要在第二个字典中定义显式参数,合并两个,并展开结果?
答案 0 :(得分:5)
关键字扩展必须在最后。
print render_template('/path/to/template.html',
title = 'My page title',
more = 'even more stuff',
**logged_in
)
答案 1 :(得分:1)
是的,你只是倒退了。关键字扩展必须在最后。
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)