装饰器
利用高阶函数和闭包,实现不改变已实现的功能和调用方式的情况下增加功能
def log(func):
def inner(*args, **kw):
print('call %s():' % func.__name__)
return func(*args, **kw)
return inner
@log
def now():
print('2015-3-25')
>>> now()
call now():
2015-3-25
把@log放到now()函数的定义处,相当于执行了语句:
now = log(now)
调用now(),实际上是log(now)()
log(now)返回的是一个函数,在后面加(),是调用了log中的inner()