装饰器和闭包
装饰器:本质就是函数,功能是为其它函数添加附加功能。
原则:
1.不修改被修饰函数的源代码。
2.不修改被修饰函数的调用方式。
闭包:在一个外函数中定义了一个内函数,内函数里运用了外函数的局部变量,并且外函数的把这个内函数作为参数返回。这样就构成了一个闭包。
装饰器实例:
import time def timeit(func): def test(): start = time.clock() func() end = time.clock() print('time used: ', end - start) return test @timeit #等价于sum1 = timeit(sum1) def sum1(): a = 1 + 2 print(a) sum1()
def log(func): def wrapper(*args, **kw): print('call %s():' % func.__name__) return func(*args, **kw) return wrapper @log #等价于now = log(now) def now(): print('2015-3-25') now()