Python---装饰器
2016-03-06 12:19
405 查看
装饰器是一个非常著名的设计模式,常常被用于有切面需求的场景,较为经典的有插入日志、性能測试、事务处理等。装饰器是解决这类问题的绝佳设计。有了装饰器,我们就能够抽离出大量函数中与函数功能本身无关的雷同代码并继续重用。
概括的讲,装饰器的作用就是为已经存在的对象加入额外的功能。
假如我要计算一个函数的运行时间:
import time
def foo():
print 'in foo()'
def timeit(func):
start = time.clock()
func()
end =time.clock()
print 'used:', end - start
timeit(foo)
计算完一个之后,我又想计算其他几个函数的运行时间。为了避免反复写类似的函数,就能够让装饰器来帮你解决问题。
import time
def timeit(func):
def wrapper():
start = time.clock()
func()
end = time.clock()
print ‘used’,end - start
return wrapper
@timeit
def function():
print 'into function()'
function()
-----------------------------------
使用内嵌包装函数来确保每次新函数都被调用
对带參数的函数进行装饰
对參数数量不确定的函数进行装饰
让装饰器带參数
概括的讲,装饰器的作用就是为已经存在的对象加入额外的功能。
假如我要计算一个函数的运行时间:
import time
def foo():
print 'in foo()'
def timeit(func):
start = time.clock()
func()
end =time.clock()
print 'used:', end - start
timeit(foo)
计算完一个之后,我又想计算其他几个函数的运行时间。为了避免反复写类似的函数,就能够让装饰器来帮你解决问题。
import time
def timeit(func):
def wrapper():
start = time.clock()
func()
end = time.clock()
print ‘used’,end - start
return wrapper
@timeit
def function():
print 'into function()'
function()
-----------------------------------
使用内嵌包装函数来确保每次新函数都被调用
相关文章推荐
- python测试微信中谁把你删除了
- vim+python+OpenCV学习七 : Sobel算子、Laplacian算子和Canny边缘检测
- python的简单介绍
- 用python爬虫来爬华科宿舍查电费
- python _列表
- python之禅
- Python class and function json
- python基础02
- sublime 常见错误 UnicodeDecodeError: 'gbk' codec can't decode bytes
- python -抽象那些事
- Python脚本的基本格式和文档字符串
- python函数式编程
- PythonChallenge之level-6解题报告
- Python切片知识解析
- python实现二叉树和它的七种遍历
- python 数字
- 基于python3的机器学习库
- python实现PMI(求词语关联性)
- windows下安装numpy,scipy和matplotlib
- Python-Day01