适合利用Python合并多个装饰器?


本文摘自php中文网,作者伊谢尔伦,侵删。

这篇文章主要介绍了Python合并多个装饰器小技巧,本文用改写调用函数的方式实现把多个装饰器合并成一行、一个函数来调用,需要的朋友可以参考下

django程序,需要写很多api,每个函数都需要几个装饰器,例如

1

2

3

4

@csrf_exempt 

@require_POST 

def  foo(request): 

    pass

既然那么多个方法都需要写2个装饰器,或者多个,有啥办法把多个合并成一行呢?
上面的函数执行过程应该是

代码如下:

1

csrf_exempt(require_POST(foo))

修改成

1

2

3

4

5

6

7

def compose(*funs): 

    def deco(f): 

        for fun in reversed(funs): 

            f = fun(f) 

         

return

return deco

函数改写成

1

2

3

@compose(csrf_exempt, require_POST) 

def foo(request): 

    pass

以上就是适合利用Python合并多个装饰器?的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

黑马云课堂8天深入理解Python视频资料

Python2.7和3.7的区别

Python中**是什么意思

Python操作xlsx文件的包openpyxl实例

Python中list函数怎么用

什么是进程(process)?什么是线程?

正则表达式以及Python re库的使用

Python如何使用urllib/urllib2访问http的get及post详解

Python定制类__str__(实例详解)

Python中tornado下用户身份认证的实现方法

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...