在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/Python/ python中partial函數(shù)的源碼看不懂的地方。

python中partial函數(shù)的源碼看不懂的地方。

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

想問(wèn)

newfunc 是調(diào)用了 newfunc() 這個(gè)函數(shù),然后返回了 func() 函數(shù)調(diào)用的結(jié)果,
那么給 newfunc.func/newfunc.args 賦值又是什么意思?
是給返回的 func() 函數(shù)的調(diào)用結(jié)果的屬性賦值嗎?

回答
編輯回答
陪她鬧

我試了試沒(méi)有這兩行賦值也是可以的。

In [23]: def add(a,b = 1):
    ...:     return a + b
    ...:

In [24]: def partial(func, *args, **keywords):
    ...:     def newfunc(*fargs, **fkeywords):
    ...:         newkeywords = keywords.copy()
    ...:         newkeywords.update(fkeywords)
    ...:         return func(*args, *fargs, **newkeywords)
    ...:     return newfunc
    ...:

In [25]: add_on_1 = partial(add,1)

In [26]: add_on_1(1)
Out[26]: 2

In [27]: add_on_1(2)
Out[27]: 3

In [28]: add2 = partial(add, b = 2)

In [29]: add2(3)
Out[29]: 5

大概是為了保留函數(shù)的參數(shù)信息。

2017年11月30日 03:50