閉包和裝飾模式

2021-08-20 03:57:59 字數 1665 閱讀 6857

閉包:在乙個外函式中定義了乙個內函式,內函式裡運用了外函式的臨時變數,並且外函式的返回值是內函式的引用。這樣就構成了乙個閉包。

一般情況下,在我們認知當中,如果乙個函式結束,函式的內部所有東西都會釋放掉,還給記憶體,區域性變數都會消失。但是閉包是一種特殊情況,如果外函式在結束的時候發現有自己的臨時變數將來會在內部函式中用到,就把這個臨時變數繫結給了內部函式,然後自己再結束。

定義乙個裝飾器:函式

defoutter(func)

:definner()

:print

('123 執行inner')

ret=func()

print

('456 執行inner')

returnret

returninner

@outter

defindex()

:print

('這是index..')

return trueprint

(index())

使用裝飾器:帶引數的裝飾器

defoutter(func)

:definner(a1,a2)

:print

('123 執行inner')

ret=func(a1,a2)

print

('456 執行inner')

returnret

returninner

@outter

defindex(a1,a2)

:print

('這是index..')

returna1-a2

print

(index(

11,6

))

理清邏輯順序即可知,輸出結果為:

123 執行inner

這是index..

456 執行inner

5

閉包和裝飾器

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

閉包和裝飾器

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

閉包和裝飾器

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