首页 > 解决方案 > 如何处理不存在的装饰器

问题描述

我想导入 jit 以加快我的代码速度,但是如何处理某些计算机上未安装 numba 的错误?在下面的代码中说:

from numba import jit

@jit
def some_function(x):
    ....#some more code

现在,some_function即使没有应用装饰器也可以正常运行,但速度会慢一些。所以我可以试一试,除了:

try:
    from numba import jit
except:
   pass

但是我该如何处理这部分代码呢?

@jit <----- def some_function(x): ....#更多代码

我可能会做类似两个功能的东西:

try:
    @jit <----
    def some_function(x):
    ...
except:
    def some_function(x):
    ...

即使这样可行,复制代码似乎也不好。那么,解决这个问题的方法是什么?如果出现导入​​错误,如何使装饰器消失/不起作用?

标签: pythonexceptiondecorator

解决方案


你可以像returnfunction本身一样,

try:
    from numba import jit
except ImportError as err:
    jit = lambda x: x # return the function itself

推荐阅读