Python实现对一个函数应用多个装饰器的方法示例
本文实例讲述了Python实现对一个函数应用多个装饰器的方法。分享给大家供大家参考,具体如下:
下面的例子展示了对一个函数应用多个装饰器,可以加多个断点,在debug模式下,查看程序的运行轨迹。。。
#!/usr/bin/env python #coding:utf-8 def decorator1(func): def wrapper(): print 'hello python 之前' func() return wrapper def decorator2(func): def wrapper(): func() print 'hello python 之后' return wrapper @decorator1 @decorator2 def test(): print 'hello python!' test()
运行结果:
hello python 之前 hello python! hello python 之后
关于python装饰器的更多介绍,可参考本站:
1. Python装饰器学习(九步入门)
2. Python装饰器与面向切面编程
更多关于Python相关内容可查看本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。
您可能感兴趣的文章:
- Python装饰器的函数式编程详解
- 巧用Python装饰器 免去调用父类构造函数的麻烦
- python 装饰器功能以及函数参数使用介绍
- python使用装饰器和线程限制函数执行时间的方法
- python通过装饰器检查函数参数数据类型的方法
- python函数装饰器用法实例详解
- Python中利用函数装饰器实现备忘功能
- 浅析Python编写函数装饰器
- python中函数总结之装饰器闭包详解
- 详谈Python高阶函数与函数装饰器(推荐)
相关推荐
-
python通过装饰器检查函数参数数据类型的方法
本文实例讲述了python通过装饰器检查函数参数数据类型的方法.分享给大家供大家参考.具体分析如下: 这段代码定义了一个python装饰器,通过此装饰器可以用来检查指定函数的参数是否是指定的类型,在定义函数时加入此装饰器可以非常清晰的检测函数参数的类型,非常方便 复制代码 代码如下: def accepts(exception,**types): def check_accepts(f): assert len(types) == f.func_code.co_argco
-
python使用装饰器和线程限制函数执行时间的方法
本文实例讲述了python使用装饰器和线程限制函数执行时间的方法.分享给大家供大家参考.具体分析如下: 很多时候函数内部包含了一些不可预知的事情,比如调用其它软件,从网络抓取信息,可能某个函数会卡在某个地方不动态,这段代码可以用来限制函数的执行时间,只需要在函数的上方添加一个装饰器,timelimited(2)就可以限定函数必须在2秒内执行完成,如果执行完成则返回函数正常的返回值,如果执行超时则会抛出错误信息. # -*- coding: utf-8 -*- from threading imp
-
Python中利用函数装饰器实现备忘功能
"备忘"的定义 "memoization"(备忘)这个词是由Donald Michie在1968年提出的,它基于拉丁语单词"memorandum"(备忘录),意思是"被记住".虽然它和单词"memorization"在某种程度上有些相似,但它并不是该单词的错误拼写.实际上,Memoisation是一种用于通过计算来加速程序的技术,它通过记住输入量的计算结果,例如函数调用结果,来实现其加速目的.如果遇到相同的
-
python函数装饰器用法实例详解
本文实例讲述了python函数装饰器用法.分享给大家供大家参考.具体如下: 装饰器经常被用于有切面需求的场景,较为经典的有插入日志.性能测试.事务处理等.装饰器是解决这类问题的绝佳设计, 有了装饰器,我们就可以抽离出大量函数中与函数功能本身无关的雷同代码并继续重用.概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能. #! coding=utf-8 import time def timeit(func): def wrapper(a): start = time.clock() func
-
Python装饰器的函数式编程详解
Python的装饰器的英文名叫Decorator,当你看到这个英文名的时候,你可能会把其跟Design Pattern里的Decorator搞混了,其实这是完全不同的两个东西.虽然好像,他们要干的事都很相似--都是想要对一个已有的模块做一些"修饰工作",所谓修饰工作就是想给现有的模块加上一些小装饰(一些小功能,这些小功能可能好多模块都会用到),但又不让这个小装饰(小功能)侵入到原有的模块中的代码里去.但是OO的Decorator简直就是一场恶梦,不信你就去看看wikipedia上的词条
-
巧用Python装饰器 免去调用父类构造函数的麻烦
先看一段代码: 复制代码 代码如下: class T1(threading.Thread): def __init__(self, a, b, c): super(T1, self).__init__() self.a = a self.b = b self.c = c def run(self): print self.a, self.b, self.c 代码定义了一个继承自threading.Thread的class,看这句 super(T1, self).__init__() 也有些人喜欢
-
python中函数总结之装饰器闭包详解
1.前言 函数也是一个对象,从而可以增加属性,使用句点来表示属性. 如果内部函数的定义包含了在外部函数中定义的对象的引用(外部对象可以是在外部函数之外),那么内部函数被称之为闭包. 2.装饰器 装饰器就是包装原来的函数,从而在不需要修改原来代码的基础之上,可以做更多的事情. 装饰器语法如下: @deco2 @deco1 def func(arg1,arg2...): pass 这个表示了有两个装饰器的函数,那么表示的含义为:func = deco2(deco1(func)) 无参装饰器语法如下:
-
python 装饰器功能以及函数参数使用介绍
简单的说:装饰器主要作用就是对函数进行一些修饰,它的出现是在引入类方法和静态方法的时候为了定义静态方法出现的.例如为了把foo()函数声明成一个静态函数 复制代码 代码如下: class Myclass(object): def staticfoo(): ............ ............ staticfoo = staticmethod(staticfoo) 可以用装饰器的方法实现: 复制代码 代码如下: class Myclass(object): @staticmethod
-
浅析Python编写函数装饰器
编写函数装饰器 本节主要介绍编写函数装饰器的相关内容. 跟踪调用 如下代码定义并应用一个函数装饰器,来统计对装饰的函数的调用次数,并且针对每一次调用打印跟踪信息. class tracer: def __init__(self,func): self.calls = 0 self.func = func def __call__(self,*args): self.calls += 1 print('call %s to %s' %(self.calls, self.func.__name__)
-
详谈Python高阶函数与函数装饰器(推荐)
一.上节回顾 Python2与Python3字符编码问题,不管你是初学者还是已经对Python的项目了如指掌了,都会犯一些编码上面的错误.我在这里简单归纳Python3和Python2各自的区别. 首先是Python3-->代码文件都是用utf-8来解释的.将代码和文件读到内存中就变成了Unicode,这也就是为什么Python只有encode没有decode了,因为内存中都将字符编码变成了Unicode,而Unicode是万国码,可以"翻译"所以格式编码的格式.Python3中
随机推荐
- IOS获取各种文件目录路径的方法
- CSS清除浮动常用方法小结
- jQuery动画效果实现图片无缝连续滚动
- 批处理判断是否特殊字符的实现代码
- JS中frameset框架弹出层实例代码
- php输出xml格式字符串(用的这个)
- php实现阿拉伯数字和罗马数字相互转换的方法
- android开发教程之ubuntu使用adb连接小米2的步骤和adb调试方法
- php中批量删除Mysql中相同前缀的数据表的代码
- python中的字典使用分享
- Python基于回溯法子集树模板解决旅行商问题(TSP)实例
- Ajax动态加载数据库示例
- 水果贩子教你如何挑选好水果(图)
- SQL 联合查询与XML解析实例详解
- Silverlightbutton图片切换样式实例代码
- JavaScript效率调优经验
- Nginx的nginx.conf配置文件中文注释说明
- java 自动生成略缩图示例代码
- websocket++简单使用及实例分析
- 解决vue2.0动态绑定图片src属性值初始化时报错的问题