Python学习23:函数装饰器的使用(方法重用)
2014-07-29 17:08
766 查看
装饰器实现原理
#FileName : dec.py #Python装饰器(原型):使用工具函数的重用 import time #定义一个测试的函数 def func(): print('Have a good day!') #再次定义一个测试的函数 def func2(): #创建一个列表,作为测试使用,使用1到100范围,增速为2,并且能够被3整除的数值,构建列表 testLs = [data for data in range(1,100,2) if not data % 3] for i in testLs: print(i,end = ' ') print() #定义工具函数,用于测试函数运行的时间 def call_func(fu): #在工具函数内部定义嵌入式函数用作返回值 def next_func(): start = time.clock() print('start : ',start) fu() end = time.clock() print('end : ',end) return next_func #将工具函数的返回值赋值给测试函数func,测试func运行的时间 func = call_func(func) #调用func函数,当前的func函数已经改变 func()
普通装饰器
#使用函数装饰器@.......................... print('使用函数装饰器@-------------------') @call_func def func3(): #func3 = call_func(func3) print('使用Python函数装饰器:------------') print('以上的效果等同于 func3 = call_func(func3)') #调用函数func3 func3() print()
多重装饰器
#定义另外一个工具函数,用于多重函数装饰器操作 def tool_func(func): def next_func(): print('多重函数修饰器--------------') func() print('多重函数修饰器------------over') return next_func #使用多重函数装饰器@.......................... @tool_func @call_func def func4(): #实现步骤:func4 = call_func(func4)==>func4 = tool_func(func4) print('函数装饰器就是函数,可以实现功能重用') #调用func4 func4()
带参数的装饰器
#带参数的函数装饰器:--------------- print('带参数的函数装饰器------------') #定义另外一个工具函数 def var_func(var_str): print('zhjzhjzhjzhjzh') def next_func(func): print('带参数的装饰器--------------',var_str) def thd_func(): func() print('带参数的装饰器--------------') return thd_func print("jiejiejiejiejiejiei") return next_func @var_func('Hello Python world') def test_func(): #等价于 test_func = [var_func('Hello Python world')](test_func) print('http://csdn.com.cn/jeizhj') test_func()
内置装饰器
内置的装饰器内置的装饰器有三个,分别是staticmethod、classmethod和property,作用分别是把类中定义的实例方法变成静态方法、类方法和类属性。由于模块里可以定义函数,所以静态方法和类方法的用处并不是太多,除非你想要完全的面向对象编程。而属性也不是不可或缺的。
相关文章推荐
- python使用装饰器和线程限制函数执行时间的方法
- Python使用装饰器和线程限制函数执行时间的方法
- Python学习之功能函数使用方法详解
- Python语言学习讲解三:详解Python中的split()函数的使用方法
- Python:通过计算阶乘来学习lambda和reduce这两个函数的使用
- Python:通过计算阶乘来学习lambda和reduce这两个函数的使用
- three.js学习 函数使用方法散记2
- Python学习29:使用特殊的方法定制类(类似于c++的运算符重载)
- Python:通过计算阶乘来学习lambda和reduce这两个函数的使用
- python中map、filter、reduce 函数使用方法
- three.js学习 函数使用方法散记3
- python中使用sys模板和logging模块获取行号和函数名的方法
- Python学习13:字符串操作函数使用
- 收集常用的Python 内置的各种字符串处理 函数的使用方法
- three.js学习 函数使用方法散记4
- 学习PHP数组函数使用方法
- Python: 使用装饰器“@”取得函数执行时间
- 深入学习PHP数组函数使用方法
- python中getattr函数使用方法 getattr实现工厂模式
- python学习3:自定义函数使用