嵌套函數
在一個函數內部定義的函數稱為嵌套函數
閉包的形成
內層函數對外層函數非全局變量的引用就會形成閉包
閉包作用
保證數據安全
例子
li = []
def average(value):li.append(value)return sum(li)/len(li)
如上面代碼li[]這個列表人人都能修改,這樣就很不安全,若是如下面代碼把他放到函數里面,這樣我們就非常安全了。
def average(value):li = [] li.append(value)return sum(li)/len(li)
但是樣就帶來一個問題,所有的局部變量都會釋放,這樣li[]里的數據就沒有了,如何繼續保存這個數據就需要用到我們的閉包了,如下面代碼,再定義一個函數
def average(value):li = []def inner(value):li.append(value)return sum(li)/len(li)return inner
如下列代碼調用這個average函數,avg的結果就是inner,這樣就通過閉包的形式把這個變量保存了起來,函數執行完后,這個變量不會消失。
avg = average()
print(avg(6000))
總結
函數中被引用的非全局變量也稱自由變量,這個自由變量會與內層函數產生一個綁定關系,自由變量不會再內存中消失
不嫌棄的點點關注,點點贊 ?(?ˊ?ˋ)?* ??????