functools.wraps
Topic source下面代码,不把注释部分解开的话执行结果是“wrapper”,而不是“now”。说明不加这句话,外部调用函数属性会出问题。
#import functools
def log(text): def decorator(func): #@functools.wraps(func) def wrapper(*args, **kw): print('%s %s():' % (text, func.__name__)) return func(*args, **kw) return wrapper return decorator
@log('execute')
def now(): print('2015-3-25')
print(now.__name__)
好像不加就变成了调用wrapper函数,加了还是now函数自己本身
可以用now.name来打印出来看看,看是wrapper还是now自己本身
不懂不要紧,感觉有点明白就行,既然教程上面说了就这样写比较好,感觉不能纠结太多,写程序不能太纠结于某一个点,实在无法理解就跳过,否则会影响学习的心态
- 1
脱离语言
没看出来functools.wraps到底是干什么用的,不写好像也没影响