Python decorator拦截器代码实例解析


Posted in Python onApril 04, 2020

这个decorator是什么意思呢?

很简单,它接受一个log的参数,即传入logger对象。然后它会先把函数名打印出来,接下来,会利用enumerate函数,将args、kwargs的任意参数给展开,并按顺序输出。最后,它再将func以这些参数包装回去,继续进行函数的执行和结果返回。

例1 最简单

def get_text(name):
  return "hello, {0}".format(name)

def p_decorate(func):
  def func_wrapper(name):
    return "<p>{0}</p>".format(func(name))
  return func_wrapper

my_get_text = p_decorate(get_text)
print(my_get_text("zhangsan"))

例2 参数通用化

def p_decorate(func):
  def func_wrapper(*args, **kwargs):
    return "<p>{0}</p>".format(func(*args, **kwargs))
  return func_wrapper

class Person(object):
  def __init__(self):
    self.name = "Neng"
    self.family = "Xiong"

  @p_decorate
  def get_fullname(self):
    return self.name+" "+self.family

my_person = Person()
print(my_person.get_fullname())

例3 根据参数,实现动态拦截器

def tags(tag_name):
  def tags_decorator(func):
    def func_wrapper(*args, **kargs):
      return "<{0}>{1}</{0}>".format(tag_name, func(*args, **kargs))
    return func_wrapper
  return tags_decorator

@tags("div")
@tags("p")
@tags("strong")
def get_text(name):
  return "hello, "+name

print(get_text("zhangsan"))

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python操作MongoDB详解及实例
May 18 Python
详解利用django中间件django.middleware.csrf.CsrfViewMiddleware防止csrf攻击
Oct 09 Python
python得到电脑的开机时间方法
Oct 15 Python
python读取txt文件中特定位置字符的方法
Dec 24 Python
Python实现图片转字符画的代码实例
Feb 22 Python
关于python多重赋值的小问题
Apr 17 Python
浅析Python 中几种字符串格式化方法及其比较
Jul 02 Python
Django 通过JS实现ajax过程详解
Jul 30 Python
详解Anconda环境下载python包的教程(图形界面+命令行+pycharm安装)
Nov 11 Python
Python FFT合成波形的实例
Dec 04 Python
PyCharm取消波浪线、下划线和中划线的实现
Mar 03 Python
谈谈python垃圾回收机制
Sep 27 Python
浅谈Python中os模块及shutil模块的常规操作
Apr 03 #Python
Python实现多线程下载脚本的示例代码
Apr 03 #Python
python实现将两个文件夹合并至另一个文件夹(制作数据集)
Apr 03 #Python
pycharm安装及如何导入numpy
Apr 03 #Python
解决pyPdf和pyPdf2在合并pdf时出现异常的问题
Apr 03 #Python
Python利用PyPDF2库获取PDF文件总页码实例
Apr 03 #Python
Numpy 理解ndarray对象的示例代码
Apr 03 #Python
You might like
php array_merge下进行数组合并的代码
2008/07/22 PHP
php图片加中文水印实现代码分享
2012/10/31 PHP
yum命令安装php7和相关扩展
2016/07/04 PHP
php实现基于PDO的预处理示例
2017/03/28 PHP
Firefox 无法获取cssRules 的解决办法
2006/10/11 Javascript
javascript中获取下个月一号,是星期几
2012/06/01 Javascript
js 实现 input type=&quot;file&quot; 文件上传示例代码
2013/08/07 Javascript
简单的ajax连接库分享(不用jquery的ajax)
2014/01/19 Javascript
JS的encodeURI和java的URLDecoder.decode使用介绍
2014/05/08 Javascript
javascript抽象工厂模式详细说明
2014/12/16 Javascript
jQuery中removeAttr()方法用法实例
2015/01/05 Javascript
Bootstrap table使用方法详细介绍
2016/12/09 Javascript
详细分析单线程JS执行问题
2017/11/22 Javascript
Vue.js项目中管理每个页面的头部标签的两种方法
2018/06/25 Javascript
vue中使用 pako.js 解密 gzip加密字符串的方法
2019/06/10 Javascript
vue-cli3使用mock数据的方法分析
2020/03/16 Javascript
解决Ant Design Modal内嵌Form表单initialValue值不动态更新问题
2020/10/29 Javascript
python实现决策树
2017/12/21 Python
Python的iOS自动化打包实例代码
2018/11/22 Python
使用selenium和pyquery爬取京东商品列表过程解析
2019/08/15 Python
python实现的登录与提交表单数据功能示例
2019/09/25 Python
python判断是空的实例分享
2020/07/06 Python
CSS3支持IE6, 7, and 8的边框border属性
2012/12/28 HTML / CSS
Html5 localStorage入门教程
2018/04/26 HTML / CSS
HTML5实现移动端弹幕动画效果
2019/08/01 HTML / CSS
Melissa鞋马来西亚官方网站:MDreams马来西亚
2018/04/05 全球购物
linux面试题参考答案(3)
2012/09/13 面试题
SOA的常见陷阱或者误解是什么
2014/10/05 面试题
《童年的发现》教学反思
2014/02/14 职场文书
三月学雷锋活动总结
2014/06/26 职场文书
党课培训心得体会
2014/09/02 职场文书
餐厅保洁员岗位职责
2015/04/10 职场文书
机器人总动员观后感
2015/06/09 职场文书
2015年小学教师培训工作总结
2015/07/21 职场文书
导游词之峨眉乐山/兵马俑/北京故宫御花园
2019/09/03 职场文书
JavaScript实现队列结构过程
2021/12/06 Javascript