閉包和裝飾器

2021-08-21 04:09:10 字數 973 閱讀 8218

閉包:兩個函式的巢狀,外部函式返回內部函式的引用,外部函式一定有引數

def 外部函式(引數):

def 內部函式():

pass

return 內部函式

他跟函式之間的區別:

1.格式兩個函式巢狀

2.閉包外部函式的引數可以在記憶體中保持

裝飾器是什麼:閉包加@***

裝飾器的作用:在不改變原先的函式值跟呼叫的方式,新增額外的功能

裝飾器的**:

def set_fun(func):

def call_fun(*args,**kwargs):

return func(*args,**kwargs)

return call_fun

@set_fun

def test():

pass

1.裝飾前的函式test,是由func指向的

2.裝飾後的函式test,實際是call_fun

3.裝飾前test,裝飾後test,裝飾後的test(call_fun)三者保持一致

4.裝飾器不能去改變函式的呼叫方式跟返回值(道德)

三個函式的巢狀,第三層函式內包含乙個閉包,第三層返回乙個閉包的引用,第三層引數必須有引數

def set_args(args):

def set_func(func):

def call_func(*args,**kwargs):

return func()

return call_func

return set_func

@set_args("引數")

def test():

print("test")

作用:可以用來傳引數

閉包和裝飾器

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

閉包和裝飾器

在python中建立乙個閉包可以歸結為以下三點 閉包思考 1.閉包似優化了變數,原來需要類物件完成的 作,閉包也可以完成 2.由於閉包引 了外部函式的區域性變數,則外部函式的區域性變數沒有及時釋放,消耗記憶體 裝飾器 開放封閉原則 封閉 已實現的功能 塊 開放 對擴充套件開發 例子 def w1 f...

閉包和裝飾器

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