本文摘自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 f
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》频道 >>
人民邮电出版社
python入门书籍,非常畅销,超高好评,python官方公认好书。
转载请注明出处:木庄网络博客 » 适合利用Python合并多个装饰器?