def now():
… print ‘2013-12-25’
…
f = now
f()
2013-12-25
函数对象有一个_name_属性,可以拿到函数的名字:
now._name_
‘now’
f._name_
‘now’
@log
def now():
print '2013-12-25'
>>> now()
call now():
2013-12-25
现在,假设我们要增强now()函数的功能,比如,在函数调用前后自动打印日志,但又不希望修改now()函数的定义,这种在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator)。
概括的讲 装饰器的作用就是为已经存在的对象添加额外的功能。