python返回前一句 python中返回函式

2021-10-12 10:41:43 字數 1372 閱讀 1761

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():returnsum(lst)return lazy_sum

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

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

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

>>>f()10

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

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

defcalc_prod(lst):defcal():return reduce(lambda x,y:x*y,lst)returncal

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

另一種方法返回list中各元素的乘積:

defcalc_prod(lst):defcal():return map(lambda x:x*x,lst)returncal

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

結果:map函式返回結果:

[1, 4, 9, 16]

python第一句 第一句python

內部執行過程 python內部執行過程如下 內容編碼 python直譯器在載入.py檔案中的 時,會對內容進行編碼 預設ascill ascii american standard code for information interchange,美國標準資訊交換 是基於拉丁字母的一套電腦編碼系統,...

每日一句 2014 8 26

when life gets hard and you want to give up,remember that life is full of ups and downs,and without the downs,the ups would mean nothing 當生活很艱難,你想要放棄的...

每日一句 2014 9 1

people with goals succeed because they know where they re going 有目標的人能夠成功,因為他們知道他們要去哪 people with goals succeed because they know where they re going ...