装饰器是用来修饰函数的函数,其参数包括修饰函数对象,最后一定要将修饰后的函数对象返回。
为了降低函数的复杂度,可以考虑在装饰器中植入通用功能的代码。装饰器的常用功能包括:1、引入日志;2、增加计时逻辑来检测性能;3、给函数加入事务的能力。
举例:为求Pi方法增加计时功能。
import random
import time
def runtime(func):
def wrapper():
start = time.clock()
temp = func()
end = time.clock()
print 'Time consum:',end - start
return temp
return wrapper
@runtime
def Pi():
count = 1000000
incount = 0
for i in xrange(count):
x = random.random()
y = random.random()
if (x**2 + y**2) < 1:
incount += 1
return (incount * 4.0 / count)
print Pi()