返回函式
1. 高階函式除了能夠接收函式作為引數外,還能把函式作為結果返回
2. 例如乙個求和函式,通常情況下的定義以及呼叫:
>>> def sum(*nums):x=0for n in nums:
x=x+n
return x
>>> sum(1,2,3,4,5)
15
不返回求和的結果,而是返回求和的函式:
>>> def sum_1(*nums):def sum_2():
x=0for n in nums:
x=x+n
return x
return sum_2
>>> s=sum_1(1,2,3,4,5)
>>> s#呼叫 sum_1時,返回的是求和函式,而不是求和結果
.sum_2 at 0x000001d998d0c790>
>>> s()#呼叫函式s時,返回的是求和結果
15
要注意:當呼叫 sum_1 時,即使傳入相同的引數,每次呼叫都會返回乙個新的函式
>>> s1=sum_1(1,2,3)>>> s2=sum_1(1,2,3)
>>> s1==s2
false
>>> s1()
6>>> s2()
6
3. 閉包函式是能夠讀取其他函式內部變數的函式
例如:
>>> def count():fs=for i in range(1,4):
def f():
return i*i
return fs
>>> f1,f2,f3 = count()
>>> f1()
9>>> f2()
9>>> f3()
9
在count函式中,函式 f() 讀取了count函式內部的變數 i ,因此可以把函式 f()看作是閉包函式
但是,每次迴圈,都會建立乙個新的函式,建立後不會立即執行,而是等到迴圈結束後才返回,此時i變成了3,所以結果都是9
要注意:返回函式不要引用任何迴圈變數,或者後續會發生變化的變數
再建立乙個函式:
>>> def count():def f(j):
def g():
return j*j
return g
fs=for i in range(1,4):
return fs
>>> f1,f2,f3=count()
>>> f1()
1>>> f2()
4>>> f3()
9
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 返回函式
返回函式 python的函式不但可以返回int str list dict等資料型別,還可以返回函式!例如,定義乙個函式 f 我們讓它返回乙個函式 g,可以這樣寫 deff print call f 定義函式g defg print call g 返回函式g return g仔細觀察上面的函式定義,...