Python装饰器提示 'NoneType' object is not callable

以下是一个简单的无参数、被装饰函数无返回值的简单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

你可能感兴趣的:(Python基础)