我试图在 python 中实现装饰器,但在第 14 行出现错误,即 hello() #The code- def maint(item1): def greet(): print("Good Morning") item1() print("Tanish") return greet() #decorator---- @maint def hello(): print("Hello") # hello=maint(hello) hello()我究竟做错了什么?
1 回答
偶然的你
TA贡献1841条经验 获得超3个赞
return greet()
在装饰器中,您调用greet()
并返回其结果。由于greet()
没有显式返回,因此结果为None
。这将有助于认识到装饰器是这样的简写语法:
def hello(): passhello = maint(hello)
注意 hello 是如何被重新分配给任何maint()
返回值的。在您的情况下,hello
被重新分配给None
. 所以调用hello()
会导致错误。
要解决此问题,只需return greet
不带括号即可。装饰器总是返回一个函数。他们不应该调用该函数。
添加回答
举报
0/150
提交
取消