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 21 Python
Python 遍历列表里面序号和值的方法(三种)
Feb 17 Python
python中文乱码不着急,先看懂字节和字符
Dec 20 Python
python读文件保存到字典,修改字典并写入新文件的实例
Apr 23 Python
python 缺失值处理的方法(Imputation)
Jul 02 Python
利用python求积分的实例
Jul 03 Python
Python学习笔记之For循环用法详解
Aug 14 Python
win10安装tensorflow-gpu1.8.0详细完整步骤
Jan 20 Python
Python实现桌面翻译工具【新手必学】
Feb 12 Python
python基于socket模拟实现ssh远程执行命令
Dec 05 Python
Python自动化测试基础必备知识点总结
Feb 07 Python
matplotlib之pyplot模块之标题(title()和suptitle())
Feb 22 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/11/16 PHP
PHP 读取Postgresql中的数组
2013/04/14 PHP
PHP限制页面只能在微信自带浏览器访问的代码
2014/01/15 PHP
php数组去重复数据示例
2014/02/25 PHP
php中JSON的使用方法
2015/04/30 PHP
javascript div 弹出可拖动窗口
2009/02/26 Javascript
基于jquery中children()与find()的区别介绍
2013/04/26 Javascript
jQuery实现流动虚线框的方法
2015/01/29 Javascript
jQuery实现给页面换肤的方法
2015/05/30 Javascript
js实现类似MSN提示的页面效果代码分享
2015/08/24 Javascript
js添加事件的通用方法推荐
2016/05/15 Javascript
JS 动态加载js文件和css文件 同步/异步的两种简单方式
2016/09/23 Javascript
JS实现简单的二元方程计算器功能示例
2017/01/03 Javascript
微信小程序 scroll-view隐藏滚动条详解
2017/01/16 Javascript
Node.js读取文件内容示例
2017/03/07 Javascript
jQuery插件zTree实现更新根节点中第i个节点名称的方法示例
2017/03/08 Javascript
详解vue+vuex+koa2开发环境搭建及示例开发
2018/01/22 Javascript
Angularjs中的$apply及优化使用详解
2018/07/02 Javascript
Vue点击切换颜色的方法
2018/09/13 Javascript
mpvue开发音频类小程序踩坑和建议详解
2019/03/12 Javascript
微信小程序文章详情页跳转案例详解
2019/07/09 Javascript
一篇文章弄懂javascript中的执行栈与执行上下文
2019/08/09 Javascript
javascript刷新父页面方法汇总详解
2019/10/10 Javascript
Python实现的一个自动售饮料程序代码分享
2014/08/25 Python
python创建进程fork用法
2015/06/04 Python
Python快速从注释生成文档的方法
2016/12/26 Python
2021年的Python 时间轴和即将推出的功能详解
2020/07/27 Python
pandas按照列的值排序(某一列或者多列)
2020/12/13 Python
英国时尚运动品牌的合集:The Sports Edit
2017/12/20 全球购物
全球领先的全景影像品牌:Insta360
2019/08/21 全球购物
预备党员党课思想汇报
2014/01/13 职场文书
优秀中职教师事迹材料
2014/08/26 职场文书
违纪检讨书范文
2015/01/27 职场文书
团拜会主持词
2015/07/04 职场文书
仅用几行Python代码就能复制她的U盘文件?
2021/06/26 Python
Java由浅入深通关抽象类与接口(上篇)
2022/04/26 Java/Android