這篇文章主要介紹了Python合併多個裝飾器小技巧,本文用改寫呼叫函數的方式實作把多個裝飾器合併成一行、一個函數來呼叫,需要的朋友可以參考下
django程序,需要寫很多api,每個函數都需要幾個裝飾器,例如
@csrf_exempt @require_POST def foo(request): pass
既然那麼多方法都需要寫2個裝飾器,或多個,有啥辦法把多個合併成一行呢?
上面的函數執行程序應該是
程式碼如下:
csrf_exempt(require_POST(foo))
修改成
def compose(*funs): def deco(f): for fun in reversed(funs): f = fun(f) return f return deco
函數改寫成
@compose(csrf_exempt, require_POST) def foo(request): pass
以上是適合利用Python合併多個裝飾器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!