Python中被装饰函数意外返回None的问题排查
装饰器导致函数返回None的问题解决
你的代码存在两个问题:
wrapper函数没有返回原函数的执行结果,Python函数若未显式写return语句,默认会返回None- 函数的名称属性是
__name__而非name,直接调用func.name会触发AttributeError
修正后的代码如下:
def logger_decorator(func): def wrapper(*args, **kwargs): print(f"Calling {func.__name__} with {args}") result = func(*args, **kwargs) return result # 传递原函数的返回值 return wrapper @logger_decorator def add(x, y): return x + y print(add(2, 3)) # 现在会输出5
运行修正后的代码,add(2,3)就能正确返回5了——wrapper函数现在会把原函数的执行结果返回,同时也修复了函数名称的调用错误。
内容的提问来源于stack exchange,提问作者SyntaxTerror
相关产品推荐
相关产品推荐

