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虚拟环境virtualenv的使用教程
Oct 20 Python
对Tensorflow中的变量初始化函数详解
Jul 27 Python
pygame游戏之旅 添加游戏暂停功能
Nov 21 Python
使用python3构建文件传输的方法
Feb 13 Python
Python Numpy库datetime类型的处理详解
Jul 13 Python
tensorflow对图像进行拼接的例子
Feb 05 Python
Django 项目通过加载不同env文件来区分不同环境
Feb 17 Python
Django数据库操作之save与update的使用
Apr 01 Python
Python爬虫:Request Payload和Form Data的简单区别说明
Apr 30 Python
Python scrapy爬取小说代码案例详解
Jul 09 Python
pytorch中Schedule与warmup_steps的用法说明
May 24 Python
分析Python list操作为什么会错误
Nov 17 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
php静态文件返回304技巧分享
2015/01/06 PHP
highchart数据源纵轴json内的值必须是int(详解)
2017/02/20 PHP
php 多继承的几种常见实现方法示例
2019/11/18 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
2020/04/02 PHP
prototype class详解
2006/09/07 Javascript
Jsonp 跨域的原理以及Jquery的解决方案
2010/05/18 Javascript
基于jQuery的js分页代码
2010/06/10 Javascript
Javascript玩转继承(二)
2014/05/08 Javascript
JavaScript实现格式化字符串函数String.format
2016/12/16 Javascript
实例分析nodejs模块xml2js解析xml过程中遇到的坑
2017/03/18 NodeJs
微信小程序如何获知用户运行小程序的场景教程
2017/05/17 Javascript
Vee-Validate的使用方法详解
2017/09/22 Javascript
JS中的BOM应用
2018/02/02 Javascript
Vue自定义toast组件的实例代码
2018/08/15 Javascript
vue-swiper的使用教程
2018/08/30 Javascript
VUE v-model表单数据双向绑定完整示例
2019/01/21 Javascript
微信小程序基于Taro的分享图片功能实践详解
2019/07/12 Javascript
JavaScript如何处理移动端拍摄图片旋转问题
2019/11/16 Javascript
jQuery擦除插件eraser使用方法详解
2020/01/11 jQuery
JavaScript前端实现压缩图片功能
2020/03/06 Javascript
[43:18]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.22
2019/09/05 DOTA
python共享引用(多个变量引用)示例代码
2013/12/04 Python
Selenium控制浏览器常见操作示例
2018/08/13 Python
利用python脚本如何简化jar操作命令
2019/02/24 Python
python编程进阶之类和对象用法实例分析
2020/02/21 Python
Python进程的通信Queue、Pipe实例分析
2020/03/30 Python
Numpy中的数组搜索中np.where方法详细介绍
2021/01/08 Python
New Era英国官网:美国棒球帽品牌
2018/03/21 全球购物
西班牙手机之家:Phone House
2018/10/18 全球购物
路由表示做什么用的?在linux环境中怎么来配置一条默认路由?
2013/06/07 面试题
继承公证书样本
2014/04/04 职场文书
建筑结构施工求职信
2014/07/11 职场文书
单位实习鉴定评语
2015/01/04 职场文书
毕业论文答辩演讲稿
2015/06/23 职场文书
小学四年级作文之最感动的一件事
2019/11/01 职场文书
深入理解Pytorch微调torchvision模型
2021/11/11 Python