Python返回函式
阿新 • • 發佈:2019-02-16
函式作為返回值
高階函式除了可以接受函式作為引數外,還可以把函式作為結果值返回。
先舉個栗子,要實現一個可變引數的函式求和,通常這麼寫:
def calc_sum(*args):
ax = 0
for n in args:
ax += n
return ax
那麼,如果不需要立刻求和,而是在後面的程式碼中,根據需要再去計算那怎麼辦呢?這時候就可以不返回求和的結果,而是返回求和的函式,如下:
def lazy_sum(*args):
def sum():
ax = 0
for n in args:
ax += n
return ax
return sum
這時候,我們呼叫lazy_sum()的時候,返回的不是結果,而是求和的函式。這個在上一篇講filter()函式的時候,裡面有個例子是求:給出範圍內所有的素數。裡面有一個篩選函式,返回的就是一個函式。點選跳轉
上面的函式還有個要注意的地方是這樣,當呼叫lazy_sum()時,每次呼叫都會返回一個全新的函式,即便傳入相同的引數:
>>> f1 = lazy_sum(10, 333, 15, 27, 89)
>>> f2 = lazy_sum(10, 333, 15, 27, 89)
>>> f1==f2
False
f1()和f2()的呼叫結果互不影響。