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

yipeiwu_com7年前Python基础

前言

最近在学习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设计】的支持。

相关文章

Collatz 序列、逗号代码、字符图网格实例

1.collatz序列 编写一个名为 collatz()的函数,它 有一个名为 number 的参数。如果参数是偶数, 那么 collatz()就打印出 number // 2,并返回该...

Python实现的ini文件操作类分享

类代码: # -*- coding:gbk -*- import ConfigParser, os class INIFILE: def __init__(self, filen...

django 邮件发送模块smtp使用详解

前言 在Python中已经内置了一个smtp邮件发送模块,Django在此基础上进行了简单地封装,让我们在Django环境中可以更方便更灵活的发送邮件。 所有的功能都在django.co...

python批量替换多文件字符串问题详解

系统如下: 操作系统 : CentOS7.3.1611_x64 Python 版本 : 2.7.5 问题描述 编码过程中有时候会遇到在多个源文件中存在同一个变量名(比如 : write...

使用Python脚本来控制Windows Azure的简单教程

使用Python脚本来控制Windows Azure的简单教程

inux开发人员经常使用 Python 完成小块的工作,因为你可以编写脚本的情况很容易。它已经成为完成配置和部署等小任务的一个流行方式。Windows Azure,微软的云,也没有什么不...