2014-10-03 49 views
3

考慮以下的片,利用代碼functools.partial()「類型錯誤:得到了參數的多個值」施加functools.partial後()

import functools 

def add(a, b): 
    return a + b 

add_10 = functools.partial(add, a=10) 
add_10(4) 

當我運行它,我得到以下錯誤:

Traceback (most recent call last): 
File "test.py", line 7, in <module> 
    add_10(4) 
TypeError: add() got multiple values for argument 'a' 

當我變更關鍵字參數中倒數第二行位置參數,它經過:

add_10 = functools.partial(add, 10) 

爲什麼它不通過第一種情況?我正在使用Python 3.4。

回答

5
import functools 

def add(a, b): 
    return a + b 

add_10 = functools.partial(add, b=10) 

add_10(4) 

此代碼將工作。具有默認值的函數參數必須在最後。所以b = 10而不是a = 10

相關問題