关于python中partial的定义的混淆

时间:2014-07-29 06:28:31

标签: python

https://docs.python.org/2/library/functools.htmlpartial的定义如下:

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

我认为应该像这样定义:

def partial(func, *args, **keywords):
    def newfunc(*fargs, **fkeywords):
        newkeywords = keywords.copy()
        newkeywords.update(fkeywords)
        return func(*(args + fargs), **newkeywords)
    return newfunc

那么,“不必要”的重要性是什么呢? 3行:

    newfunc.func = func
    newfunc.args = args
    newfunc.keywords = keywords

我真的不明白。感谢任何建议或建议。谢谢。

1 个答案:

答案 0 :(得分:4)

functools.partial实例提供这些属性,因此代码可以检查属性以查看partial实例使用什么参数调用的函数。对象不需要它们来完成它的工作。

相关问题