1 def log(func): 2 def wrapper(*args, **kw): 3 print('call %s()' % func.__name__) 4 return func(*args, **kw) 5 return wrapper 6 7 @log 8 def now(): 9 print('2015-3-25') 10 11 now()
特别注意第七行,这个不是注释,是必须的,是声明你接下来的函数声明要是用哪个装饰器。
上述代码会输出
call now()
2015-3-25
可以看出其实就是用now()作为log的输入,等于是为now函数外层增加了一个封装,便于输出now中没有定义的一些属性。