在Python中,一個簡單的功能foo(x, y)
至少有3種方式,我知道的說法y
綁定到某一值時蟒蛇3.X:綁定參數給定的值
# defining a nested function:
def foobar(x):
return foo(x, y=yval)
# using lambda
foobar = lambda x: foo(x, y=yval)
# using functools
from functools import partial
foobar = partial(foo, y=yval)
雖然我懷疑上面的列表是詳盡的,我也想知道我應該去哪一個?在性能,安全性和命名空間處理方面它們都是否相同?或者每種方法是否存在額外的開銷和警告?當其他方法已經存在時,爲什麼functools
定義爲partial
?
'partial'並沒有真正的「綁定」參數值。它定義了一個包裝舊函數的新函數,並在調用舊函數時「填充」參數值。 –
@JoelCornett對於所有其他選項也是如此。它幾乎是唯一的方法來做到這一點,而不會將其放入代表函數的內置函數中。 – delnan
@delnan:是的。你是絕對正確的。 –