閉包 裝飾器

2022-06-26 07:45:13 字數 434 閱讀 6646

概念:內部函式對外部函式作用域裡變數的引用

閉包存在的意義:

1.閉包內的閉包函式私有化了變數

2.完成了資料的封裝,類似於物件導向

概念:外部函式傳入被裝飾函式名,內部函式返回裝飾函式名。不影響原有函式的功能,還能夠新增新的功能。

1.呼叫myprint ---> 識別到語法糖。

2.將myprint傳入func --->也就是 fun1(myprint)() //後面這個括號是語法糖的效果

3.由於遇到return fun2 所以fun1(myprint)()就是 fun2()

4.執行fun2()方法,列印'aaabbb',返回func()

5.前面說過,myprint當做引數傳遞過去給func,所以func() = myprint()

6.所以執行方法myprint(),列印'我是myprint'

閉包 裝飾器

外部函式返回內部函式的引用 內部函式可以直接使用外部函式的環境變數 語法 外部函式通過返回內部函式的引用 內部函式可以直接使用外部函式的 環境變數 自由變數 函式執行時間統計 執行函式前預備處理 執行函式後清理功能 許可權校驗等場景 快取有且只有乙個引數 指向了被裝飾的函式的引用 使用裝飾器 裝飾器...

閉包,裝飾器

多層函式巢狀,函式裡面還有定義函式,一般是兩個 往往內層函式會用到外層函式的變數,把內層函式以及外部函式的變數當成乙個特殊的物件,這就是閉包。閉包比物件導向更純淨 更輕量,既有資料又有執行資料的 比普通函式功能更強大,不僅有 還有資料 利用閉包的基本原理,對乙個目標函式進行裝飾,即在執行乙個目標函式...

閉包 裝飾器

定義乙個函式 def test number 在函式內部再定義乙個函式,並且這個函式用到了外邊函式的變數,那麼將這個函式及用到的一些變數稱之為閉包 def test in number in print in text in 函式,number in is d number in return nu...