装饰器1
2
3
4
5
6
7
8
9
10
11
12
13
14
15def foo():
print 'in foo()'
# 定义一个计时器,传入一个,并返回另一个附加了计时功能的方法
def timeit(func):
# 定义一个内嵌的包装函数,给传入的函数加上计时功能的包装
def wrapper():
start = time.clock()
func()
end =time.clock()
print 'Time Elapsed:', end - start
# 将包装后的函数返回
return wrapper
的实际使用是1
foo = timeit(foo)
简写为1
2@timeit
def foo()
很好理解:新foo等于1
2
3
4
5def wrapper():
start = time.clock()
foo() # 原foo()函数
end =time.clock()
print 'Time Elapsed:', end - start
总结
就是经过装饰器,把原函数传到新函数了。在新函数中又定义了一个嵌套函数,其实最终返回的结果就是这个嵌套函数。