Python 閉包和裝飾器

2022-09-03 11:06:09 字數 472 閱讀 4963

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

閉包存在的意義:

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'

被裝飾的函式帶引數,只需要在最內部函式傳入引數即可。

python裝飾器和閉包

下面幾個部落格有裝飾器的講解,也包含了裝飾器幾種情況的例子,比如說被裝飾的函式帶引數,裝飾器本身帶引數等。理解python中的裝飾器 python裝飾器學習 例子 其實裝飾器跟設計模式中的裝飾器模式基本一樣,就是在已有的函式上新增新的功能,這也是自己對裝飾器的一點簡陋的理解了。下面是自己寫的簡單例子...

python閉包和裝飾器

要理解裝飾器,就要明白閉包 要明白閉包,首先就要從高階函式和作用域說起 說道作用域,一般會談到legb規則。所謂的legb l locals,當前命名空間 區域性作用域 e enclosing,外部函式的命名空間 外部作用域 g global,全域性的命名空間 b bulit in,內建的命名空間平...

python 閉包和裝飾器

閉包的寫法,兩層函式的巢狀,外部函式返回內部函式的引用,外層函式都帶引數 def 外層函式的名稱 引數 def 內層函式的名稱 pass return 內層函式的引用 def set fun func func 254 defcall fun nonlocal func 修改外層函式的值,並且內部函...