【python】閉包與裝飾器
# 本次講述的知識點也是非常重要的(嚴肅臉)
# 先有的閉包,之後才生成了裝飾器,同樣的也是非常簡單的東西。
# 閉包
結構組成;
寫法;外層函式返回內層函式的引用,外層函式必須要有引數!
作用;執行函式的時候我們可以把外層函式的引數儲存在記憶體中!
# 具體是如何演化成裝飾器的呢?
我記得當初學習裝飾器的時候,樣哥講裝飾器就是表面意思,等於就是在一個事物上新增附加條件的過程,所以裝飾器在工作上運用的蠻多的,簡單易用!(有點廢話~~)
現在我們說說裝飾器的演變過程;
1. 我們先定義一個閉包,外層函式set_fun()與內層函式call_fun(),外層函式傳入引數func,內層函式呼叫func(),另外在閉包外建立text()函式,列印text。這個時候我們已經差不多寫完了整個程式了,就剩下最後的執行步驟,我們可以先想一個問題,裝飾器是來新增附加東西的,所以我們可以簡單的在閉包裡的內層函式新增一些東西,這裡我們就列印“許可權”來代表新增的東西(畢竟裝飾器的初衷就是如此),接下來我們來使兩者聯絡並且執行起來;
call_fun = set_fun(test)
call_fun()
這樣,整個程式就都聯絡起來了,執行後會發現在輸出的text之上加了一個許可權兩字,對!就是我們剛剛新增的!棒棒噠!附圖;
#話說,其實這個時候我們已經完成了裝飾器的功能,等等!這還是裝飾器的最初形態,我們還可以將其變得更簡潔,更好~~~往下翻~
2. 演變第二部,我們只需把執行程式碼行的call_fun 改成 text~~~~嗯?改變不大?對,是的,改變不大,別慌,我們還有演變最終版呢!這個過渡很重要的;
# 功能還是那個功能,結果還是那個結果!這其中其實是有一個指向問題,1中的text指向是call_fun ,而現在這一層指向是經過call_fun後又指向了func,這個時候text()=func(),雙層指向更能直觀的顯示我們的所需要的目的!最終版要來咯~~~
#終版
# 這最終版就叼了,簡直瑟瑟發抖~~~哈哈,不皮了~~
#這其中要運用到一個叫做語法糖的東西,顧名思義就是粘住你(這裡是函式),在函式前新增 @+閉包外層函式名,就形成了我們最終版的裝飾器;
#語法糖的出現就減去了一行呼叫程式碼,程式碼優化還是很明顯的!之後再執行函式就行了,完全不用管裝飾器,已經自動執行了。就如圖所示,在函式前加入語法糖就行(@set_fun==》text = set_fun(text) )
# 到這裡,我們就明白了裝飾器的功能的同時,又理解了其中的呼叫過程,沒有什麼技術性的東西,全都是一些固定的用法,所以我們就可以做一個萬能裝飾器,完全不用我們去我們編寫裝飾器那種,嘿嘿;
#一般來說,裝飾器涉及了很多種情況;
# 裝飾我們的函式分為四組情況
# 1. 無參,無返回
# 2. 無參,有返回
# 3. 有參,無返回
# 4. 有參,有返回
而且,在道德上我們是不會更改函式的值和呼叫方式的,以上四種情況我在這就不說明了,別人應該寫的比我更好,本次只是簡述了閉包和裝飾器的生成過程!
# 總結;
生命有限,重在珍惜!時間更是越用越少,學習成為生命有意義的體現,更多的是滿足自己的精神世界,每天分享的東西不多,但只要一直學習,便不會孤獨!
相關文章
- Python閉包與裝飾器Python
- Python 中的閉包與裝飾器Python
- python 閉包和裝飾器Python
- python高階-閉包-裝飾器Python
- Python:從閉包到裝飾器Python
- Python 的閉包和裝飾器Python
- python的裝飾器和閉包Python
- python_August(閉包、裝飾器)Python
- Python 簡明教程 --- 22,Python 閉包與裝飾器Python
- Python高階 -- 11 閉包、裝飾器Python
- python的閉包及裝飾器薦Python
- 13. 閉包函式與裝飾器函式
- Python提高:關於閉包和裝飾器Python
- Python進階之閉包和裝飾器Python
- 閉包函式,裝飾器詳解函式
- Python Enclosing作用域、閉包、裝飾器話聊下篇Python
- 函式物件、裝飾器、閉包函式函式物件
- Python3之從遞迴到閉包再到裝飾器Python遞迴
- Python學習之路26-函式裝飾器和閉包Python函式
- 裝飾器中閉包之加認證功能
- python裝飾器2:類裝飾器Python
- 深入理解閉包,裝飾器,深拷貝淺拷貝
- Python裝飾器探究——裝飾器引數Python
- Python 裝飾器Python
- Python裝飾器Python
- 裝飾器 pythonPython
- 剖析 Python 面試知識點(一): 魔法方法、閉包/自省、裝飾器/生成器Python面試
- 《流暢的Python》 讀書筆記 第7章_函式裝飾器和閉包Python筆記函式
- Python 裝飾器裝飾類中的方法Python
- Python裝飾器模式Python模式
- python的裝飾器Python
- 1.5.3 Python裝飾器Python
- Python 裝飾器(一)Python
- Python 裝飾器原理Python
- 6、Python與設計模式–裝飾器模式Python設計模式
- Python裝飾器與面向切面程式設計Python程式設計
- 草根學Python(十六) 裝飾器(逐步演化成裝飾器)Python
- python 之裝飾器(decorator)Python