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脚本实现统计日志文件中的ip访问次数代码分享
Aug 06 Python
python中List的sort方法指南
Sep 01 Python
Python脚本文件打包成可执行文件的方法
Jun 02 Python
解析Python编程中的包结构
Oct 25 Python
python实现简单多人聊天室
Dec 11 Python
利用python修改json文件的value方法
Dec 31 Python
对python中if语句的真假判断实例详解
Feb 18 Python
在windows下使用python进行串口通讯的方法
Jul 02 Python
postman传递当前时间戳实例详解
Sep 14 Python
Python如何读写字节数据
Aug 05 Python
JupyterNotebook 输出窗口的显示效果调整实现
Sep 22 Python
python中filter,map,reduce的作用
Jun 10 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/01/12 PHP
php多种形式发送邮件(mail qmail邮件系统 phpmailer类)
2014/01/22 PHP
PHP生成唯一订单号
2015/07/05 PHP
枚举JavaScript对象的函数
2006/12/22 Javascript
如何让动态插入的javascript脚本代码跑起来。
2007/01/09 Javascript
js 操作css实现代码
2009/06/11 Javascript
jquery.ui.draggable中文文档
2009/11/24 Javascript
js本身的局限性 别让javascript做太多事
2010/03/23 Javascript
JavaScript中的object转换成number或string规则介绍
2014/12/31 Javascript
js实现键盘控制DIV移动的方法
2015/01/10 Javascript
js中this的用法实例分析
2015/01/10 Javascript
15款jQuery分布引导插件分享
2015/02/04 Javascript
js识别uc浏览器的代码
2015/11/06 Javascript
如何在Linux上安装Node.js
2016/04/01 Javascript
JS+Canvas 实现下雨下雪效果
2016/05/18 Javascript
node.js中cluster的使用教程
2017/06/09 Javascript
代码详解JS操作剪贴板
2018/02/11 Javascript
写一个移动端惯性滑动&amp;回弹Vue导航栏组件 ly-tab
2018/03/06 Javascript
react用Redux中央仓库实现一个todolist
2019/09/29 Javascript
python实现在图片上画特定大小角度矩形框
2018/10/24 Python
使用django的objects.filter()方法匹配多个关键字的方法
2019/07/18 Python
Python 读取用户指令和格式化打印实现解析
2019/09/02 Python
Python日期格式和字符串格式相互转换的方法
2020/02/18 Python
Python将二维列表list的数据输出(TXT,Excel)
2020/04/23 Python
Python CategoricalDtype自定义排序实现原理解析
2020/09/11 Python
css3+jq创作含苞待放的荷花
2014/02/20 HTML / CSS
加大码胸罩、内裤和服装:Just My Size
2019/03/21 全球购物
全球工业:Global Industrial
2020/02/01 全球购物
大学生开西餐厅创业计划书
2014/02/01 职场文书
酒店员工培训方案
2014/06/02 职场文书
2015年档案管理员工作总结
2015/05/13 职场文书
四风之害观后感
2015/06/09 职场文书
2016大学生诚信考试承诺书
2016/03/25 职场文书
人物搭配车车超萌联名预备中 【咒术迴战】 ⨯ 【天竺鼠车车】 展开合作
2022/04/11 日漫
Win2008系统搭建DHCP服务器
2022/06/25 Servers
使用 CSS 构建强大且酷炫的粒子动画效果
2022/08/14 HTML / CSS