裝飾器是程式開發中常會用到的功能,也是python語言開發的基礎知識,如果能夠在程式中合理的使用裝飾器,不僅可以提高開發效率,而且可以讓寫的程式碼看上去顯的高大上^_^
可以用到裝飾器的地方有很多,簡單的舉例如以下場景
引入日誌
函數執行時間統計函數。前預備處理
執行函數後清理功能
權限校驗等場景
快取
案例,其中ucOrder函數是是使用者需要登入後才能執行到的。如果不使用裝飾器的話,普通的做法可能是在 ucOrder中寫一堆校驗程式碼來判斷使用者是否登錄,然後決定後面的執行邏輯,這樣比較麻煩。
def user_login(fun): def islogin(request,*args,**kwargs): context = {} if request.session.has_key('uname'): context['uname'] = request.session.get('uname') else: context['uname'] = 'None' return fun(request,context,*args,**kwargs) return islogin
@user_login def ucOrder(request,context,pIndex): ''' 获取数据 处理数据 传递到页面上去可以從執行結果中看到,如果是使用多個裝飾器,它的執行順序還是有點怪異的,為什麼會這樣呢? 關於這個問題,有更好的文章可以解釋,Python 裝飾器執行順序迷思
更多python 多個裝飾器的調用順序相關文章請關注PHP中文網!