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 相关文章推荐
忘记ftp密码使用python ftplib库暴力破解密码的方法示例
Jan 22 Python
python执行外部程序的常用方法小结
Mar 21 Python
Django小白教程之Django用户注册与登录
Apr 22 Python
Python编程中装饰器的使用示例解析
Jun 20 Python
Python实现视频下载功能
Mar 14 Python
Python数据分析之双色球统计单个红和蓝球哪个比例高的方法
Feb 03 Python
Python打印“菱形”星号代码方法
Feb 05 Python
Pyspider中给爬虫伪造随机请求头的实例
May 07 Python
python中yield的用法详解——最简单,最清晰的解释
Apr 04 Python
用Python徒手撸一个股票回测框架搭建【推荐】
Aug 05 Python
Django用户身份验证完成示例代码
Apr 03 Python
pytorch 计算Parameter和FLOP的操作
Mar 04 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 cookis创建实现代码
2009/03/16 PHP
PHP 递归效率分析
2009/11/24 PHP
TMDPHP 模板引擎使用教程
2012/03/13 PHP
PHP静态调用非静态方法的应用分析
2013/05/02 PHP
PHP使用zlib扩展实现GZIP压缩输出的方法详解
2018/04/09 PHP
javascript下阻止表单重复提交、防刷新、防后退
2007/08/17 Javascript
使用SyntaxHighlighter实现HTML高亮显示代码的方法
2010/02/04 Javascript
javascript hasFocus使用实例
2010/06/29 Javascript
multiSteps 基于Jquery的多步骤滑动切换插件
2011/07/22 Javascript
在Linux系统中搭建Node.js开发环境的简单步骤讲解
2016/01/26 Javascript
JS中取二维数组中最大值的方法汇总
2016/04/17 Javascript
JS从一组数据中找到指定的单条数据的方法
2016/06/02 Javascript
Angular2内置指令NgFor和NgIf详解
2016/08/03 Javascript
完美解决浏览器跨域的几种方法(汇总)
2017/05/08 Javascript
React降级配置及Ant Design配置详解
2018/12/27 Javascript
vue实现多条件和模糊搜索功能
2019/05/28 Javascript
了解JavaScript中let语句
2019/05/30 Javascript
浅谈Vue.use到底是什么鬼
2020/01/21 Javascript
el-table表头根据内容自适应完美解决表头错位和固定列错位
2021/01/07 Javascript
Pandas中resample方法详解
2019/07/02 Python
python多进程并行代码实例
2019/09/30 Python
python通过matplotlib生成复合饼图
2020/02/06 Python
Django 后台带有字典的列表数据与页面js交互实例
2020/04/03 Python
Python常用类型转换实现代码实例
2020/07/28 Python
美国珠宝网上商店:Jeulia
2016/09/01 全球购物
英国100%防污和防水的靴子:Muck Boot Company
2020/09/08 全球购物
银行会计职员个人的自我评价
2013/09/29 职场文书
励志演讲稿500字
2014/08/21 职场文书
村创先争优活动总结
2014/08/28 职场文书
入党积极分子自我批评思想汇报
2014/10/10 职场文书
2015年试用期自我评价范文
2015/03/10 职场文书
放假通知
2015/04/14 职场文书
2015年医院后勤工作总结
2015/05/20 职场文书
首都博物馆观后感
2015/06/05 职场文书
校运会加油稿大全
2015/07/22 职场文书
妇联2016年六一国际儿童节活动总结
2016/04/06 职场文书