使用@functools.wraps的理由
生活随笔
收集整理的這篇文章主要介紹了
使用@functools.wraps的理由
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業(yè)重金招聘Python工程師標準>>>
Python 中使用裝飾器對在運行期對函數進行一些外部功能的擴展。但是在使用過程中,由于裝飾器的加入導致解釋器認為函數本身發(fā)生了改變,在某些情況下——比如測試時——會導致一些問題。Python 通過?functool.wraps?為我們解決了這個問題:在編寫裝飾器時,在實現前加入?@functools.wraps(func)?可以保證裝飾器不會對被裝飾函數造成影響。比如,在 Flask 中,我們要自己重寫?login_required?裝飾器,但不想影響被裝飾器裝飾的方法,則?login_required?裝飾器本身可以寫成下面的樣子:
def login_required_(func):@wraps(func)def decorated_view(*args, **kwargs):if current_app.login_manager._login_disabled:return func(*args, **kwargs)elif not current_user.is_authenticated:# return current_app.login_manager.unauthorized()return redirect(url_for("login.loginPage", next=request.url))return func(*args, **kwargs)return decorated_view轉載于:https://my.oschina.net/u/1185936/blog/1575917
總結
以上是生活随笔為你收集整理的使用@functools.wraps的理由的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 洛谷——P2118 比例简化
- 下一篇: 我国大陆居民身份证Java验证