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实现去除下载电影和电视剧文件名中的多余字符的方法
Sep 23 Python
Python实现简易端口扫描器代码实例
Mar 15 Python
python实现远程通过网络邮件控制计算机重启或关机
Feb 22 Python
python 统计一个列表当中的每一个元素出现了多少次的方法
Nov 14 Python
Python使用ffmpy将amr格式的音频转化为mp3格式的例子
Aug 08 Python
python处理自动化任务之同时批量修改word里面的内容的方法
Aug 23 Python
Python字符串格式化输出代码实例
Nov 22 Python
Python实现剪刀石头布小游戏(与电脑对战)
Dec 31 Python
利用Tensorflow构建和训练自己的CNN来做简单的验证码识别方式
Jan 20 Python
python实现梯度法 python最速下降法
Mar 24 Python
python 装饰器的实际作用有哪些
Sep 07 Python
Python实现聚类K-means算法详解
Jul 15 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
ThinkPHP中的关联模型注意点
2014/06/16 PHP
PHP统计目录大小的自定义函数分享
2014/11/18 PHP
Sublime里直接运行PHP配置方法
2014/11/28 PHP
PHP的运行机制与原理(底层)
2015/11/16 PHP
phpcms的分类名称和类别名称的调用
2017/01/05 PHP
php curl上传、下载、https登陆实现代码
2017/07/23 PHP
调试Node.JS的辅助工具(NodeWatcher)
2012/01/04 Javascript
浅析jquery的js图表组件highcharts
2014/03/06 Javascript
jQuery实现ToolTip元素定位显示功能示例
2016/11/23 Javascript
jQuery纵向导航菜单效果实现方法
2016/12/19 Javascript
对比分析Django的Q查询及AngularJS的Datatables分页插件
2017/02/07 Javascript
ES6实现的遍历目录函数示例
2017/04/07 Javascript
jQuery与vue实现拖动验证码功能
2018/01/30 jQuery
通过 JS 判断页面是否有滚动条的实现方法
2018/04/05 Javascript
js实现敏感词过滤算法及实现逻辑
2018/07/24 Javascript
如何使用electron-builder及electron-updater给项目配置自动更新
2018/12/24 Javascript
基于layui的table插件进行复选框联动功能的实现方法
2019/09/19 Javascript
使用Mock.js生成前端测试数据
2020/12/13 Javascript
[04:36]DOTA2国际邀请赛 ti3精彩集锦
2013/08/19 DOTA
Python解决抛小球问题 求小球下落经历的距离之和示例
2018/02/01 Python
Python装饰器原理与用法分析
2018/04/30 Python
Python 单例设计模式用法实例分析
2019/09/23 Python
在pandas中遍历DataFrame行的实现方法
2019/10/23 Python
pycharm激活码快速激活及使用步骤
2020/03/12 Python
css3过渡_动力节点Java学院整理
2017/07/11 HTML / CSS
CSS3关于z-index不生效问题的解决
2020/02/19 HTML / CSS
德国家具在线:Fashion For Home
2017/03/11 全球购物
椰子猫砂:CatSpot
2018/08/27 全球购物
荷兰天然和有机产品网上商城:BigGreenSmile.nl
2020/07/26 全球购物
机房搬迁方案
2014/05/01 职场文书
商场促销活动策划方案
2014/08/18 职场文书
群众路线个人剖析材料
2014/10/07 职场文书
校运会广播稿
2015/08/19 职场文书
小学语文教师研修感悟
2015/11/18 职场文书
2019军训心得体会
2019/06/27 职场文书
【海涛教你打DOTA】虚空假面第一视角骨弓3房29杀
2022/04/01 DOTA