You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为带类型提示的Python函数编写装饰器?我的装饰器返回None

问题分析与解决

你的装饰器返回None的核心原因是:内部包装函数Inner_Function没有返回被装饰函数的执行结果。

Python中,函数如果没有显式的return语句,默认会返回None。你当前的Inner_Function只是调用了原函数func(*args, **kwargs),但没有把这个调用的结果返回出去,所以当你调用被装饰后的is_cold时,实际得到的是Inner_Function的默认返回值None。

修正后的代码

def do_nothing(func):
    def Inner_Function(*args, **kwargs):
        # 返回原函数的执行结果
        return func(*args, **kwargs)
    return Inner_Function

@do_nothing
def is_cold(name: str) -> bool:
    return True

g = is_cold("hi")
print(g)
>> True

额外优化:保留原函数元信息(可选)

如果需要让装饰器保留原函数的名称、文档字符串、类型提示等元信息(方便类型检查工具或调试),可以使用functools.wraps装饰内部包装函数:

import functools

def do_nothing(func):
    @functools.wraps(func)
    def Inner_Function(*args, **kwargs):
        return func(*args, **kwargs)
    return Inner_Function

@do_nothing
def is_cold(name: str) -> bool:
    return True

内容的提问来源于stack exchange,提问作者gobigorgobald

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 00:52:02