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 07 Python
Python基于动态规划算法计算单词距离
Jul 25 Python
python如何实现远程控制电脑(结合微信)
Dec 21 Python
Python解析树及树的遍历
Feb 03 Python
Python实现html转换为pdf报告(生成pdf报告)功能示例
May 04 Python
python格式化输出保留2位小数的实现方法
Jul 02 Python
Python循环中else,break和continue的用法实例详解
Jul 11 Python
Python使用Pandas库常见操作详解
Jan 16 Python
python使用QQ邮箱实现自动发送邮件
Jun 22 Python
Python3如何使用多线程升程序运行速度
Aug 11 Python
如何用python开发Zeroc Ice应用
Jan 29 Python
基于Python-Pycharm实现的猴子摘桃小游戏(源代码)
Feb 20 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
DEDE实现转跳属性文档在模板上调用出转跳地址
2016/11/04 PHP
PHP实现的曲线统计图表示例
2016/11/10 PHP
使用Jquery搭建最佳用户体验的登录页面之记住密码自动登录功能(含后台代码)
2011/07/10 Javascript
javascript权威指南 学习笔记之javascript数据类型
2011/09/24 Javascript
JS this作用域以及GET传输值过长的问题解决方法
2013/08/06 Javascript
js获取本机的外网/广域网ip地址完整源码
2013/08/12 Javascript
原生js实现的贪吃蛇网页版游戏完整实例
2015/05/18 Javascript
jQuery EasyUi实战教程之布局篇
2016/01/26 Javascript
JavaScript 上传文件(psd,压缩包等),图片,视频的实现方法
2017/06/19 Javascript
解决vue2.x中数据渲染以及vuex缓存的问题
2017/07/13 Javascript
详解VUE项目中安装和使用vant组件
2019/04/28 Javascript
VUEX 数据持久化,刷新后重新获取的例子
2019/11/12 Javascript
[01:22:28]DOTA2-DPC中国联赛 正赛 SAG vs RNG BO3 第一场 1月18日
2021/03/11 DOTA
Python中模拟enum枚举类型的5种方法分享
2014/11/22 Python
Python中的hypot()方法使用简介
2015/05/18 Python
python 类详解及简单实例
2017/03/24 Python
python操作列表的函数使用代码详解
2017/12/28 Python
Python paramiko模块的使用示例
2018/04/11 Python
python画一个玫瑰和一个爱心
2020/08/18 Python
Python实现按逗号分隔列表的方法
2018/10/23 Python
VSCODE配置Markdown及Markdown基础语法详解
2021/01/19 Python
基于MUI框架使用HTML5实现的二维码扫描功能
2018/03/01 HTML / CSS
清除canvas画布内容(点擦除+线擦除)
2020/08/12 HTML / CSS
美国受欢迎的女性牛仔裤品牌:DL1961
2016/11/12 全球购物
美国最大的网上冲印店:Shutterfly
2017/01/01 全球购物
德国电子商城:ComputerUniverse
2017/04/21 全球购物
阿根廷首家户外用品制造商和经销商:Montagne
2018/02/12 全球购物
股东出资证明书(正规版)
2014/09/24 职场文书
公务员个人考察材料
2014/12/23 职场文书
幼儿园家长反馈意见
2015/06/03 职场文书
女性健康讲座主持词
2015/07/04 职场文书
同步小康驻村工作简报
2015/07/20 职场文书
2016年习总书记讲话学习心得体会
2016/01/20 职场文书
2016年精神文明建设先进个人事迹材料
2016/02/29 职场文书
nginx里的rewrite跳转的实现
2021/03/31 Servers
django上传文件的三种方式
2021/04/29 Python