从the functools
documentation开始,partial
功能“大致相当于”
def partial(func, *args, **keywords):
def newfunc(*fargs, **fkeywords):
newkeywords = keywords.copy()
newkeywords.update(fkeywords)
return func(*(args + fargs), **newkeywords)
newfunc.func = func
newfunc.args = args
newfunc.keywords = keywords
return newfunc
但是,我不明白需要行
newfunc.func = func
newfunc.args = args
newfunc.keywords = keywords
在定义中。如果我创建一个没有这三行的partial
函数,它的行为与包含这些行的定义完全相同。文档页面说明partial
对象必须具有三个属性func
,args
和keywords
,所以我可以看到为什么上面的函数定义包含这些,但我仍然没有看到他们完成了什么切实的目标。