1、原始的foo函数功能
def foo():
print 'in foo()'
foo()
================================================================================
2、现在需要增加print花费了多长时间,改写函数
import time
def foo():
start = time.clock()
print 'in foo()'
end = time.clock()
print "used ",end-start
foo()
================================================================================
3、第2个改变了原有函数,不变原函数内容
写代码要遵循开发封闭原则,虽然在这个原则是用的面向对象开发,但是也适用于函数式编程,简单来说,它规定已经实现的功能代码不允许被修改,但可以被扩展,即:
- 封闭:已实现的功能代码块
- 开放:对扩展开发
如果将开放封闭原则应用在上述需求中,那么就不允许在原函数的内部进行修改代码
import time
def foo():
print 'in foo()'
def timeit(func):
start = time.clock()
func()
end =time.clock()
print 'used:', end - start
timeit(foo)
================================================================================
4、第3个函数没变,但是调用变了,这里将调用也不变
#-*- coding: UTF-8 -*-
import time
def foo():
print 'in foo()'
# 定义一个计时器,传入一个,并返回另一个附加了计时功能的方法
def timeit(func):
# 定义一个内嵌的包装函数,给传入的函数加上计时功能的包装
def wrapper():
start = time.clock()
func()
end =time.clock()
print 'used:', end - start
# 将包装后的函数返回
return wrapper
foo = timeit(foo)
foo()
================================================================================
5、使用python糖@timeit 取代 foo = timeit(foo)
import time
def timeit(func):
def wrapper():
start = time.clock()
func()
end =time.clock()
print 'used:', end - start
return wrapper
@timeit
def foo():
print 'in foo()'
foo()