閉包和裝飾器

2021-08-22 06:10:27 字數 1587 閱讀 9847

閉包

格式:

在乙個函式內部 巢狀另外乙個函式 [函式內部宣告的內容只能作用與函式本身 出了函式沒有任何意義]

def out(引數列表):

外部函式體

def inner(引數列表):

內部函式體

def out():

print("外部函式")

def inner():

print("內部函式")

#這種函式的內部函式的呼叫只能在外部函式體中呼叫

return inner

函式體外無法直接呼叫,但是可以利用函式可以被當作乙個值傳遞間接呼叫

func = out()

print(func)

func()

'''外部函式 --由func = out()產生

.inner at 0x000002169beba8c8>

內部函式 --由func()產生

'''

裝飾器(decorator)

裝飾器是特殊的閉包: 將內部函式當做外部函式的執行結果返回

def out(函式名字):  #外層函式的引數的作用是 接受新增新需求的功能

外部函式

def inner(*values, **kwargs):

內部函式

result = 功能名字(*values, **kwargs)

return result

return inner

裝飾器的作用: 在不改變原有函式a的基礎上,呼叫a,為a增加新的功能

新增裝飾器的語法:

在指定函式的宣告上方新增 @糖語法  @外部函式名

例如:@out

def func():

練習:列印乘法表時計算出執行函式所用時間

閉包和裝飾器

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

閉包和裝飾器

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

閉包和裝飾器

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