檢視上一節:sort函數
閉包
将函數作為傳回值傳回,也是一種高階函數。這種高階函數我們也稱為叫做閉包,通過閉包可以建立一些隻有目前函數能通路的變量。可以将一些私有的資料藏到的閉包中。
示例如下:
def fn():
a = 10
# 函數内部再定義一個函數
def inner():
print('我是fn2' , a)
# 将内部函數 inner作為傳回值傳回
return inner
r = fn()
r()
執行結果為:

在這裡r是一個函數,是調用fn()後傳回的函數。這個函數實在fn()内部定義的,并不是全局函數,是以這個函數總是能通路到fn()函數内的變量。
# 求多個數的平均值
nums = [50,30,20,10,77]
# sum()用來求一個清單中所有元素的和
print(sum(nums)/len(nums))
可以看到這就将清單中元素的平均值求出來了。
形成閉包的要件
① 函數嵌套
② 将内部函數作為傳回值傳回
③ 内部函數必須要使用到外部函數的變量
代碼如下:
def make_averager():
# 建立一個清單,用來儲存數值
nums = []
# 建立一個函數,用來計算平均值
def averager(n) :
# 将n添加到清單中
nums.append(n)
# 求平均值
return sum(nums)/len(nums)
return averager
averager = make_averager()
print(averager(10))
print(averager(20))
print(averager(30))
print(averager(40))
點選檢視配套視訊教程
擷取更多内容請訂閱
python學習站官方技術圈!