閉包和裝飾器

2021-08-21 16:50:10 字數 882 閱讀 9989

在python中建立乙個閉包可以歸結為以下三點:

閉包思考:

1.閉包似優化了變數,原來需要類物件完成的⼯作,閉包也可以完成

2.由於閉包引⽤了外部函式的區域性變數,則外部函式的區域性變數沒有及時釋放,消耗記憶體

裝飾器:

開放封閉原則:

封閉:已實現的功能**塊

開放:對擴充套件開發

例子:def w1(func):

def inner():

print("開始驗證")

func()

return inner

@w1def f1():

print('f1')

python直譯器就會從上到下解釋**,步驟如下:

1. def w1(func): ==>將w1函式載入到記憶體

2. @w1

執⾏w1函式

執⾏w1函式 ,並將 @w1 下⾯的函式作為w1函式的引數,即:@w1

等價於 w1(f1) 所以,內部就會去執⾏:

def inner():

#驗證 1

#驗證 2

#驗證 3

f1() # func是引數,此時 func 等於 f1

return inner# 返回的 inner,inner代表的是函式,⾮執⾏函式 

w1的返回值

新f1 = def inner():

#驗證 1

#驗證 2

#驗證 3

原來f1()

return inner

要執⾏ f1 函式時,就會執⾏ 新f1 函式,在新f1

函式內部先執⾏驗證,再執⾏原來的f1函式,然後將原來f1 函式的返回

值返回首先,裝飾器是按裝飾器自下而上執行順序執行

例子:

閉包和裝飾器

叫什麼 閉包有什麼用 跟函式相對可以把外層函式的引數保留下來 怎麼寫 def 外層函式 引數 def 內層函式 pass return 內層函式 心法 兩個函式的巢狀,外層函式返回內層函式的引用,外層函式必須有引數func 裝飾前的test,call fun 三者引數一樣的 def set fun ...

閉包和裝飾器

閉包 兩個函式的巢狀,外部函式返回內部函式的引用,外部函式一定有引數 def 外部函式 引數 def 內部函式 pass return 內部函式 他跟函式之間的區別 1.格式兩個函式巢狀 2.閉包外部函式的引數可以在記憶體中保持 裝飾器是什麼 閉包加 裝飾器的作用 在不改變原先的函式值跟呼叫的方式,...

閉包和裝飾器

閉包 格式 在乙個函式內部 巢狀另外乙個函式 函式內部宣告的內容只能作用與函式本身 出了函式沒有任何意義 def out 引數列表 外部函式體 def inner 引數列表 內部函式體 def out print 外部函式 def inner print 內部函式 這種函式的內部函式的呼叫只能在外部...