我知道*
和**
操作符通常是如何工作的。在下面的代码中[摘自django的源代码]
def curry(_curried_func, *args, **kwargs):
def _curried(*moreargs, **morekwargs):
return _curried_func(*(args + moreargs), **dict(kwargs, **morekwargs))
return _curried
我了解了args + moreargs
部分是如何工作的—最初传递给函数curry
的[non-keyword]参数和传递给curry
返回的curried函数的参数是如何组合的。我不明白的是**dict(kwargs, **morekwargs)
是如何工作的。有人能解释一下吗?你知道吗
dict(kwargs, **morekwargs)
是一个技巧(Guidodislikes),用于将2个字典组合成1个。你知道吗因此,curried函数获取传递给
curry
的所有Kwarg,并将它们添加到传递给_curried
函数的其他Kwarg中,以创建一个超级字典。超级字典被解包并发送到_curried_func
。你知道吗它有效地构建了两个dict的联合,
kwargs
和morekwargs
。示例:这是因为
dict
构造函数接受关键字参数,所以它与最后,生成的
dict
通过**
作为关键字参数提供给_curried_func
。你知道吗相关问题 更多 >
编程相关推荐