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实现图像几何变换
Jul 06 Python
使用Python将数组的元素导出到变量中(unpacking)
Oct 27 Python
python使用筛选法计算小于给定数字的所有素数
Mar 19 Python
python爬取网页转换为PDF文件
Jun 07 Python
Python实现的简单读写csv文件操作示例
Jul 12 Python
python将字符串以utf-8格式保存在txt文件中的方法
Oct 30 Python
python后端接收前端回传的文件方法
Jan 02 Python
python实现TCP文件传输
Mar 20 Python
解决python DataFrame 打印结果不换行问题
Apr 09 Python
python读取图像矩阵文件并转换为向量实例
Jun 18 Python
Python 内存管理机制全面分析
Jan 16 Python
Python的property属性详细讲解
Apr 11 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入门学习知识点四 PHP正则表达式基本应用
2011/07/14 PHP
微信公众平台之快递查询功能用法实例
2015/04/14 PHP
PHP中通过trigger_error触发PHP错误示例
2015/06/23 PHP
详解PHP序列化和反序列化原理
2018/01/15 PHP
laravel框架与其他框架的详细对比
2019/10/23 PHP
Javascript的构造函数和constructor属性
2010/01/09 Javascript
jQuery EasyUI API 中文文档 - NumberBox数字框
2011/10/13 Javascript
利用JS实现浏览器的title闪烁
2013/07/08 Javascript
浅析JavaScript中的typeof运算符
2013/11/30 Javascript
页面加载完后自动执行一个方法的js代码
2014/09/06 Javascript
AngularJS 基础ng-class-even指令用法
2016/08/01 Javascript
AngularJS 服务详细讲解及示例代码
2016/08/17 Javascript
深入解析js轮播插件核心代码的实现过程
2017/04/14 Javascript
JavaScript中的FileReader图片预览上传功能实现代码
2017/07/24 Javascript
实现两个文本框同时输入的实例
2017/09/25 Javascript
vue中的计算属性的使用和vue实例的方法示例
2017/12/04 Javascript
AngularJS实现的根据数量与单价计算总价功能示例
2017/12/26 Javascript
React数据传递之组件内部通信的方法
2017/12/31 Javascript
浅析vue插槽和作用域插槽的理解
2019/04/22 Javascript
vue+webpack 更换主题N种方案优劣分析
2019/10/28 Javascript
vue-cli3项目打包后自动化部署到服务器的方法
2020/09/16 Javascript
node.js通过Sequelize 连接MySQL的方法
2020/12/28 Javascript
[46:00]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第一局
2016/03/03 DOTA
使用Node.js和Socket.IO扩展Django的实时处理功能
2015/04/20 Python
Python正则表达式分组概念与用法详解
2017/06/24 Python
Python实现数据结构线性链表(单链表)算法示例
2019/05/04 Python
tensorflow 获取checkpoint中的变量列表实例
2020/02/11 Python
python中使用paramiko模块并实现远程连接服务器执行上传下载功能
2020/02/29 Python
诗狄娜化妆品官方网站:Stila Cosmetics
2016/12/21 全球购物
英国领先的在线旅游和休闲零售商:lastminute.com
2019/01/23 全球购物
技校生自我鉴定范文
2013/09/26 职场文书
草船借箭教学反思
2014/02/03 职场文书
我与祖国共奋进演讲稿
2014/09/13 职场文书
一百条裙子读书笔记
2015/07/01 职场文书
生日寿星公答谢词
2015/09/29 职场文书
2019年特色火锅店的创业计划书模板
2019/08/28 职场文书