您好,登錄后才能下訂單哦!
什么是高階函數?
一個函數的參數是否可以接受另外一個函數作為參數,這樣的函數就叫做高階函數。
最簡單的高階函數實例:
def func(x,y,z):
return z(x)+z(y)
print(func(-20,-10,abs))
返回函數
高階函數除了可以接收函數參數之外,還可以把函數作為返回值
def func(*args):
def sum():
ax = 0
for n in args:
ax+=n
return ax
return sum
a = func(1,2,3,4,5,6)
print(a())
結果是:21
內部函數可以引用外部函數的參數和局部變量,當外部函數返回內部函數時,相關參數和變量都保存在返回的函數當中,這就是閉包。
當調用外部func函數的時候,每次調用都是返回一個新的的函數,即使傳值是一致的,也會不一樣。例子如下:
def func(*args):
def sum():
ax = 0
for n in args:
ax+=n
return ax
return sum
a1 = func(1,2,3,4,5,6)
a2 = func(1,2,3,4,5,6)
print(a1==a2)
結果返回是False。
但是如果print(a1()==a2())是True ,調用的值是一樣的!
def count():
fs = []
for i in range(1,5):
def f():
return i*i*i
fs.append(f)
return fs
f1,f2,f3,f4 = count()
print(f1())
print(f2())
print(f3())
print(f4())
結果是:
64
64
64
64
--------------------------------------------------------------
def count():
def f(i):
def func():
return i*i
return func
fs = []
for var in range(1,5):
fs.append(f(var))
return fs
f1,f2,f3,f4 = count()
print(f1())
print(f2())
print(f3())
print(f4())
結果是:
1
4
9
16
劃重點:返回函數不要應用任何循環變量,或者后面會發生改變的變量。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。