2014-12-25 67 views
4

我需要一個函數,可以將其他函數參數修復爲常量值。 例如函數參數修復程序

def a(x, y): 
    return x + y 

b = fix(a, x=1, y=2) 

現在乙方應是接收無參數在每次被調用時的返回3的功能。 我很確定python有類似內置的東西,但我找不到它。

謝謝。

+0

感謝這就是我一直在尋找。自從他第一次接受Ffisegydd的回答。 –

+0

你是對的,對不起 –

回答

6

您可以使用functools.partial

>>> import functools 
>>> 
>>> def a(x, y): 
...  return x + y 
... 
>>> b = functools.partial(a, x=1, y=2) 
>>> b() 
3 
4

您可以使用functools.partial返回一個新的partial對象。 有效地它爲您提供了相同的功能,但一個或多個參數已被設置值填充。

from functools import partial 

def a(x, y): 
    return x + y 

b = partial(a, x=1, y=2) 

print(b()) 
# 3 
+0

從技術上講,'partial'是一種類型,創建一個新的可調用對象,而不是一個函數。 – chepner

+0

@chepner感謝您的提示。我快速瀏覽了文檔並修改了我的答案。 – Ffisegydd