python中装饰器级连的使用方法示例


Posted in Python onSeptember 29, 2017

前言

最近在学习python,学会了为什么要使用装饰器,也明白了装饰器是什么了,但是你也许会问,是否可以在装饰器前面再添加一层装饰器,会怎么样呢?就像大楼一样,一层一层地叠在一起。其实是可以的。现在我们就来学习这种堆叠技术,与类的继承是有相似之处,可以不断地继承下去。下面话不多说了,来一起看看详细的介绍吧。

代码如下:

#python 3.6 
def star(func): 
  def inner(*args, **kwargs): 
    print("*" * 30) 
    func(*args, **kwargs) 
    print("*" * 30) 
  return inner 
 
def percent(func): 
  def inner(*args, **kwargs): 
    print("%" * 30) 
    func(*args, **kwargs) 
    print("%" * 30) 
  return inner 
 
@star 
@percent 
def printer(msg): 
  print(msg) 
printer("Hello")

结果输出如下:

******************************
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Hello
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
******************************

在这个例子里,先输出星号,也就是先调用第一层装饰器star,接着调用第二层装饰器percent,最后调用函数printer。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
Python利用itchat库向好友或者公众号发消息的实例
Feb 21 Python
Python远程视频监控程序的实例代码
May 05 Python
pyqt5 实现多窗口跳转的方法
Jun 19 Python
Python+Selenium使用Page Object实现页面自动化测试
Jul 14 Python
Python Django2.0集成Celery4.1教程
Nov 19 Python
tensorflow2.0保存和恢复模型3种方法
Feb 03 Python
Python如何将图像音视频等资源文件隐藏在代码中(小技巧)
Feb 16 Python
使用python绘制cdf的多种实现方法
Feb 25 Python
python软件都是免费的吗
Jun 18 Python
使用OpenCV去除面积较小的连通域
Jul 05 Python
Python中使用Selenium环境安装的方法步骤
Feb 22 Python
用 Python 定义 Schema 并生成 Parquet 文件详情
Sep 25 Python
python中map()函数的使用方法示例
Sep 29 #Python
python中reduce()函数的使用方法示例
Sep 29 #Python
Django Admin 实现外键过滤的方法
Sep 29 #Python
python 调用c语言函数的方法
Sep 29 #Python
python文件名和文件路径操作实例
Sep 29 #Python
Python 实现简单的shell sed替换功能(实例讲解)
Sep 29 #Python
Python 基础教程之闭包的使用方法
Sep 29 #Python
You might like
Zend Framework数据库操作方法实例总结
2016/12/11 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
2017/08/30 PHP
PHP框架Laravel中使用UUID实现数据分表操作示例
2018/05/30 PHP
extjs中grid中嵌入动态combobox的应用
2011/01/01 Javascript
js之ActiveX控件使用说明 new ActiveXObject()
2014/03/03 Javascript
js实现进度条的方法
2015/02/13 Javascript
JavaScript通过HTML的class来获取HTML元素的方法总结
2016/05/24 Javascript
Angular实现购物车计算示例代码
2017/02/21 Javascript
bootstrap模态框远程示例代码分享
2017/05/22 Javascript
详解用node.js实现简单的反向代理
2017/06/26 Javascript
jQuery的时间datetime控件在AngularJs中的使用实例(分享)
2017/08/17 jQuery
JS一个简单的注册页面实例
2017/09/05 Javascript
浅谈Angular路由复用策略
2017/10/04 Javascript
node实现分片下载的示例代码
2018/10/17 Javascript
jQuery实现动态生成年月日级联下拉列表示例
2019/05/11 jQuery
vue实现表单录入小案例
2019/09/27 Javascript
VUE 组件转换为微信小程序组件的方法
2019/11/06 Javascript
[00:57]英雄,你的补给到了!
2020/11/13 DOTA
[01:06:59]完美世界DOTA2联赛PWL S2 Magma vs FTD 第一场 11.29
2020/12/02 DOTA
python网络编程学习笔记(八):XML生成与解析(DOM、ElementTree)
2014/06/09 Python
Python中join和split用法实例
2015/04/14 Python
Python cookbook(数据结构与算法)从任意长度的可迭代对象中分解元素操作示例
2018/02/13 Python
Python实现接受任意个数参数的函数方法
2018/04/21 Python
python3实现逐字输出的方法
2019/01/23 Python
Tensorflow获取张量Tensor的具体维数实例
2020/01/19 Python
基于matplotlib xticks用法详解
2020/04/16 Python
Python如何读写二进制数组数据
2020/08/01 Python
HTML5中indexedDB 数据库的使用实例
2017/05/11 HTML / CSS
医学毕业生自我鉴定
2013/10/30 职场文书
大学老师推荐信
2014/02/25 职场文书
质量提升方案
2014/06/16 职场文书
商品陈列协议书
2014/09/29 职场文书
公司周年庆典致辞
2015/07/30 职场文书
汽车销售合同文本
2019/08/08 职场文书
MySQL连接控制插件介绍
2021/09/25 MySQL
如何解决php-fpm启动不了问题
2021/11/17 PHP