python 返回函式

2021-09-08 18:55:29 字數 1483 閱讀 6030

返回函式

python的函式不但可以返回int、str、list、dict等資料型別,還可以返回函式!

例如,定義乙個函式 f(),我們讓它返回乙個函式 g,可以這樣寫:

deff():

print

'call f()...'#

定義函式g:

defg():

print

'call g()...'#

返回函式g:

return

g仔細觀察上面的函式定義,我們在函式 f 內部又定義了乙個函式 g。由於函式 g 也是乙個物件,函式名 g 就是指向函式 g 的變數,所以,最外層函式 f 可以返回變數 g,也就是函式 g 本身。

呼叫函式 f,我們會得到 f 返回的乙個函式:

>>> x = f() #

呼叫f()

call f()...

>>> x #

變數x是f()返回的函式:

>>> x() #

x指向函式,因此可以呼叫

call g()... #

呼叫x()就是執行g()函式定義的**

請注意區分返回函式和返回值:

defmyabs():

return abs #

返回函式

defmyabs2(x):

return abs(x) #

返回函式呼叫的結果,返回值是乙個數值

返回函式可以把一些計算延遲執行。例如,如果定義乙個普通的求和函式:

defcalc_sum(lst):

return

sum(lst)

呼叫calc_sum()函式時,將立刻計算並得到結果:

>>> calc_sum([1, 2, 3, 4])

10但是,如果返回乙個函式,就可以「延遲計算」:

defcalc_sum(lst):

deflazy_sum():

return

sum(lst)

return

lazy_sum

#呼叫calc_sum()並沒有計算出結果,而是返回函式:

>>> f = calc_sum([1, 2, 3, 4])

>>>f

#對返回的函式進行呼叫時,才計算出結果:

>>>f()

10由於可以返回函式,我們在後續**裡就可以決定到底要不要呼叫該函式。

任務請編寫乙個函式calc_prod(lst),它接收乙個list,返回乙個函式,返回函式可以計算引數的乘積。

def

calc_prod(lst):

defmul():

m=1;

for i in

lst:

m*=i

return

m

return

mul;

f = calc_prod([1, 2, 3, 4])

print f()

python返回函式 python中返回函式

python的函式不但可以返回int str list dict等資料型別,還可以返回函式!例如,定義乙個函式 f 我們讓它返回乙個函式 g,可以這樣寫 deff print call f 定義函式g defg print call g 返回函式g return g 仔細觀察上面的函式定義,我們在函...

python返回 python 返回函式

返回函式 1.高階函式除了能夠接收函式作為引數外,還能把函式作為結果返回 2.例如乙個求和函式,通常情況下的定義以及呼叫 def sum nums x 0for n in nums x x n return x sum 1,2,3,4,5 不返回求和的結果,而是返回求和的函式 def sum 1 n...

python 返回函式

實現乙個可變引數的求和。通常情況下,求和的函式是這樣定義的 def calc sum args ax 0 for n in args ax ax n return ax但是,如果不需要立刻求和,而是在後面的 中,根據需要再計算怎麼辦?可以不返回求和的結果,而是返回求和的函式 def lazy sum...