# -*- coding:utf-8 -*- # 返回一個函數時,牢記該函數並未執行,返回函數中不要引用任何可能會變化的變量 # 閉包的用處/優點有兩條: # 從函數外可以讀取函數內部的變量 # 讓這些變量的值始終保持在內存中(也可以理解爲保留當前運行環境) def createcounter(): s = 0 f = [0] def counter(): # 閉包中內函數修改外函數局部變量: # nonlocal 關鍵字聲明 一個變量, 表示這個變量不是局部變量空間的變量,需要向上一層變量空間找這個變量 # 以把閉包變量改成可變類型數據進行修改,比如列表。 f[0] = f[0] + 1 print(f[0]) nonlocal s s = s + 1 return s return counter counterA = createcounter() print(counterA(), counterA(), counterA(), counterA()) counterB = createcounter() if[counterB(), counterB(), counterB(), counterB()] == [1, 2, 3, 4]: print('測試通過!') else: print('測試失敗!')
Python 閉包 返回函數
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.