函数调用中的多个 kwarg?

nve*_*ven 8 python

我有一个简单的函数,它是这样调用的:

arbitrary_function(**kwargs1, **kwargs2, **kwargs3)
Run Code Online (Sandbox Code Playgroud)

它似乎在我的本地安装(python 3.5.1)上编译得很好,但是当我在带有 python 3.4.5 的 docker 上编译它时会引发 SyntaxError。

我不太确定为什么会出现这种行为。不允许使用多个 kwarg 吗?我应该在传递给函数之前组合它们吗?单独传递它们更方便,例如:

plot(**x_axis_params, **y_axis_params, **plot_params)
Run Code Online (Sandbox Code Playgroud)

代替

params = dict()

for specific_param in [x_axis_params, y_axis_params, plot_params]:    
    params.update(specific_param)

plot(**params)
Run Code Online (Sandbox Code Playgroud)

use*_*ica 6

这是 Python 3.5 中引入的新功能。如果您必须支持 Python 3.4,那么您基本上会陷入update循环中。

人们对如何将多个 dicts 组合成一个有自己喜欢的变体,但唯一真正对update循环进行重大改进的变体是 3.5+ 独占,因此它对此无济于事。(作为参考,新的字典合并语法是{**kwargs1, **kwargs2, **kwargs3}。)