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中将阿拉伯数字转换成中文的实现代码
May 19 Python
Python中unittest用法实例
Sep 25 Python
python读取word文档的方法
May 09 Python
Python文件读取的3种方法及路径转义
Jun 21 Python
Python计算已经过去多少个周末的方法
Jul 25 Python
python 实现红包随机生成算法的简单实例
Jan 04 Python
python 上下文管理器使用方法小结
Oct 10 Python
利用python为运维人员写一个监控脚本
Mar 25 Python
详解爬虫被封的问题
Apr 23 Python
django 微信网页授权认证api的步骤详解
Jul 30 Python
Python 多线程共享变量的实现示例
Apr 17 Python
Python学习之os包使用教程详解
Mar 21 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
基于文本的留言簿
2006/10/09 PHP
php编写一个简单的路由类
2011/04/13 PHP
PHP缓冲区用法总结
2016/02/14 PHP
Laravel SQL语句记录方式(推荐)
2016/05/26 PHP
PHP操作MongoDB实现增删改查功能【附php7操作MongoDB方法】
2018/04/24 PHP
Referer原理与图片防盗链实现方法详解
2019/07/03 PHP
增强的 JavaScript 的 trim 函数的代码
2007/08/13 Javascript
juqery 学习之五 文档处理 插入
2011/02/11 Javascript
js FLASH幻灯片字符串中有连接符&的处理方法
2012/03/01 Javascript
深入document.write()与HTML4.01的非成对标签的详解
2013/05/08 Javascript
php结合imgareaselect实现图片裁剪
2015/07/05 Javascript
JS实现方向键切换输入框焦点的方法
2015/08/19 Javascript
详解vue-Resource(与后端数据交互)
2017/01/16 Javascript
jQuery实现按比例缩放图片的方法
2017/04/29 jQuery
nodeJS实现简单网页爬虫功能的实例(分享)
2017/06/08 NodeJs
Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解
2017/08/01 jQuery
Vue配置marked链接添加target=&quot;_blank&quot;的方法
2019/07/19 Javascript
解决$store.getters调用不执行的问题
2019/11/08 Javascript
js实现数字滚动特效
2019/12/16 Javascript
JS数据类型(基本数据类型、引用数据类型)及堆和栈的区别分析
2020/03/04 Javascript
微信小程序获取公众号文章列表及显示文章的示例代码
2020/03/10 Javascript
Python文档生成工具pydoc使用介绍
2015/06/02 Python
Python箱型图处理离群点的例子
2019/12/09 Python
python将图片转base64,实现前端显示
2020/01/09 Python
tensorflow之tf.record实现存浮点数数组
2020/02/17 Python
Python单元测试及unittest框架用法实例解析
2020/07/09 Python
html5 touch事件实现触屏页面上下滑动(二)
2016/03/10 HTML / CSS
大学毕业生工作的自我评价
2013/10/01 职场文书
学生不讲诚信检讨书
2014/09/29 职场文书
专业见习报告范文
2014/11/03 职场文书
公司股份转让协议书范本
2015/01/28 职场文书
2015年感恩节活动总结
2015/03/24 职场文书
2015年信息中心工作总结
2015/05/25 职场文书
JavaScript继承的三种方法实例
2021/05/12 Javascript
如何在C++中调用Python
2021/05/21 Python
nginx的zabbix 5.0安装部署的方法步骤
2021/07/16 Servers