開發者學堂課程【Python 語言基礎 3:函數、面向對象、異常處理:閉包】學習筆記,與課程緊密聯系,讓使用者快速學習知識。
課程位址:
https://developer.aliyun.com/learning/course/601/detail/8737閉包
目錄
一、 閉包的定義
二、 形成閉包的條件
一、閉包的定義
#将函數作為傳回值傳回,是一種高階函數
#這種高階函數被稱為閉包,通過閉包可以建立一些隻有目前函數能通路的變量
#可以将一些私有的資料藏到閉包中
d
ef fn():
a = 10
#函數内部再定義一個函數
def inner():
print(‘
我是f
n2’, a )
#将内部函數 inner 作為傳回值傳回
return inner
#r 是一個函數,是調用fn()後傳回的函數
#這個函數是在 fn() 内部定義,不是全局函數
# 這個函數能通路到 fn() 函數内的變量
r
= fn()
#
r()
#求多個數的平均值
n
ums = [50,30,20,10,77]
# sum() 用來求一個清單中所有元素的和
p
rint(sum(nums))
二丶形成閉包的條件
#形成閉包的要點:
#1.函數嵌套
#2.将内部函數作為傳回值傳回
#3.内部函數必須要使用外部函數的變量
求清單中所有元素的平均值
p
rint(sum(nums)/
len
())
#建立一個清單,用來儲存數值
nums
= []
#建立一個函數,用來結算平均值
d
ef averager(n):
#将n添加到清單中
nums.append(n)
#求平均值
return sum(nums)/len(nums)
p
rint(averager(10))
p
rint(averager(10))
p
rint(averager(30))
p
rint(averager(30))
nums
= []
d
ef make_averager():
d
ef averager(n):
nums.append(n)
return sum(nums)/len(nums)
r
eturn average
average = make_averager()
p
rint(average(10))
p
rint(average(20))
p
rint(average(30))
p
rint(average(40))