试验装饰器decorator的代码时:
def log(func):
def wrapper(*args,**kw):
print('call %s():'%func._name_)
return func(*args,**kw)
return wrapper
@log
def now():
print('2017-7-21')
now()
出现报错:AttributeError: ‘function’ object has no attribute ‘name’
后发现错误func.name应该为func._name_
于是代码改为:
def log(func):
def wrapper(*args,**kw):
print('call %s():'%func.__name__)
return func(*args,**kw)
return wrapper
@log
def now():
print('2017-7-21')
now()
build,运行正确!