欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python合并多個(gè)裝飾器小技巧

 更新時(shí)間:2015年04月28日 08:43:31   投稿:junjie  
這篇文章主要介紹了Python合并多個(gè)裝飾器小技巧,本文用改寫調(diào)用函數(shù)的方式實(shí)現(xiàn)把多個(gè)裝飾器合并成一行、一個(gè)函數(shù)來調(diào)用,需要的朋友可以參考下

django程序,需要寫很多api,每個(gè)函數(shù)都需要幾個(gè)裝飾器,例如

復(fù)制代碼 代碼如下:

@csrf_exempt 
@require_POST 
def  foo(request): 
    pass 

既然那么多個(gè)方法都需要寫2個(gè)裝飾器,或者多個(gè),有啥辦法把多個(gè)合并成一行呢?
上面的函數(shù)執(zhí)行過程應(yīng)該是
復(fù)制代碼 代碼如下:

csrf_exempt(require_POST(foo)) 

修改成
復(fù)制代碼 代碼如下:

def compose(*funs): 
    def deco(f): 
        for fun in reversed(funs): 
            f = fun(f) 
        return f 
    return deco
 
函數(shù)改寫成
復(fù)制代碼 代碼如下:

@compose(csrf_exempt, require_POST) 
def foo(request): 
    pass 

參考:
Can I combine two decorators into a single one in Python

相關(guān)文章

最新評(píng)論