加() 是函数调用
直接return 函数名 是返回函数对象给其它调用者使用。
return decorator 后面都加上(),报错:TypeError: decorator() missing 1 required positional argument: 'func' 这个原因是加() 调用时,decorator 函数需要传一个参数,所以会报你贴的错误(TypeError: decorator() missing 1 required positional argument: 'func')。
请看看
为啥需要返回函数,而不是返回函数调用呢?
@log('hahahahahah')
def now3():
print('2018-99-99')
相当于
now3 = log('hahahahahah')(now3)
所以log('hahahahahah') 这个函数传参数'hahahahahah'调用的结果应该是函数decorator,
不是decorator() , log('hahahahahah')是一个函数,再传参数调用函数
log('hahahahahah')(now3) ,将log('hahahahahah')(now3)的返回值赋值给now3.