适合利用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合并多个装饰器?的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

Python中index是什么

Python自带numpy吗

Python中一些常见的错误

Python基础点介绍

Python怎么安装库

Python适合在什么系统

Python字典中如何添加键值对

Python和matlab的区别

Python通过公共键对字典列表排序(利用itemgetter函数)

Python正则表达式怎么学习?

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




打赏

取消

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

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

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

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

评论

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