我很困惑三者之間。據我所知,閉包是由另一個函數返回的功能,可以訪問本地變量形成一個封閉範圍閉合,部分和裝飾
例如:
def add_nums(one):
def adder(two):
return one+two
return adder
a_10 = add_nums(10)
print a_10(5)
15
這裏,adder
是一個封閉。
但是,這是不是也是一個partial
from functools import partial
a_10 = partial(add_nums, 10)
print a_10()(5)
15
是什麼兩者之間的區別的例子嗎?
另外,裝飾器用於爲功能添加功能。
def add_nums(one):
def adder(two):
print "foo, bar"
return one+two
return adder
a_10 = add_nums(10)
print a_10(5)
foo, bar
15
所有三者之間的區別是什麼?
裝飾器只是一個接受函數並返回函數的函數。由於這通常涉及嵌套函數,因此通過閉包訪問參數函數是很常見的,其中內部函數捕獲它的環境,但我想你可以用部分實現它,而不是顯式傳遞值。目前還不清楚你想知道什麼。 – jonrsharpe