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

如何实现无functools依赖的轻量带参Python dummy装饰器?

错误原因

你当前的写法属于无参装饰器的结构,而@jit(nopython=True)这种带括号传参的调用形式,要求装饰器先接收配置参数、返回真正的装饰器函数,再接收被装饰的目标函数。你直接把func作为第一层参数,调用jit(nopython=True)时没有传入函数对象,自然会触发参数缺失的报错。

极简实现方案

不需要引入functools依赖,直接写两层嵌套结构即可,所有装饰器入参直接忽略,完全满足降级兼容的空实现需求:

def jit(*args, **kwargs):
    def wrapper(func):
        return func
    return wrapper

这个实现直接返回原函数,连多余的内层调用包装都省去,是最轻量的带参空装饰器实现方式,完美支持你要求的@jit(nopython=True)调用形式。

如果需要同时兼容带参、不带参两种装饰器写法(即同时支持@jit和@jit(nopython=True)),只需要加一层简单的判断即可:

def jit(*args, **kwargs):
    # 适配无参调用场景:@jit
    if len(args) == 1 and callable(args[0]):
        return args[0]
    # 适配带参调用场景:@jit(nopython=True)
    def wrapper(func):
        return func
    return wrapper

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 19:06:04