以下是一个简单的无参数、被装饰函数无返回值的简单Python装饰器例子:
def log(func) :
def wrapper():
print('time:')
func()
return wrapper()
@log
def show():
print('2019')
show()
运行结果:
TypeError: ‘NoneType’ object is not callable
错误原因:
装饰器中不应return wrapper() ,而应该是return wrapper,即返回的应该是函数调用而不是函数的运行结果。
正确代码:
def log(func) :
def wrapper():
print('time:')
func()
return wrapper
@log
def show():
print('2019')
show()
运行结果:
time:
2019