萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> 編程語言綜合 >> Python合並多個裝飾器小技巧

Python合並多個裝飾器小技巧

   這篇文章主要介紹了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

copyright © 萬盛學電腦網 all rights reserved