python裝飾器@wraps作用-修復被裝飾後的函式名等屬性的改變
python裝飾器(decorator)在實現的時候,被裝飾後的函式其實已經是另外乙個函式了(函式名等函式屬性會發生改變),
為了不影響,python的functools包中提供了乙個叫wraps的decorator來消除這樣的***。寫乙個decorator的時候,最好在實現之前加上functools的wrap,
它能保留原有函式的名稱和docstring。
未加@wraps的時候:
列印結果是:
但是加上@wraps以後:
列印結果是:
其中主要的就是兩個變數:
1、顯示 正在執行的函式的名稱 f.name
2、顯示 正在執行的函式的注釋 f.doc
簡單來說就是:
如果沒使用@wraps,當a呼叫了裝飾器b的話,即使a.name,返回的會是裝飾器b的函式名稱,而不是a的函式名稱
如果使用了@wraps,當a呼叫了裝飾器b的話,a.__ name__返回的會是a函式的名稱,而不是飾器b的名稱,
這也即使常說的@wraps是裝飾器的修復技術,
實際就是修復還原了a的__ name__變數,同理__ doc__變數也是一樣。
vmware修復ubuntu啟動不了問題
vmware修復ubuntu啟動不了問題 最近在vmware虛擬機器裡面安裝了ubuntu10.10,安裝配置eclipse android sdk,無奈修改系統配置引數後啟動不了,只好通過iso安裝檔案啟動進入原來的系統進行修復,vmware修復ubuntu啟動不了問題 最近在vmware虛擬機器...
修復一處上傳不了的問題
原因居然是因為我關閉了記憶體快取。網頁有dom是動態生成的,如img。說來也很奇葩,記憶體快取關了後,imageloader shouldloadimmediately在第二次的時候返回了false,導致延遲設定了setimage,導致在layout的時候沒有正確的大小,導致網頁的js獲取寬度的時候...
Ubuntu 14 04進不了登入介面的修復
ubuntu 14.04進不了登入介面的修復 ubuntu14.04 在安裝軟體時,把一些有衝突的庫做了解除安裝 降版本什麼的,導致系統重啟後在顯示了ubuntu的頁面後無法進入的使用者名稱和密碼輸入的登入介面 碰到這種問題,可以通過重灌gnome解決,如果還不行,就只能重灌系統了。讓機器連上有線網...