如何处理不存在的装饰器

mat*_*age 2 python exception decorator

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

from numba import jit

@jit
def some_function(x):
    ....#some more code
Run Code Online (Sandbox Code Playgroud)

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

try:
    from numba import jit
except:
   pass
Run Code Online (Sandbox Code Playgroud)

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

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

我也许可以做两个函数:

try:
    @jit <----
    def some_function(x):
    ...
except:
    def some_function(x):
    ...
Run Code Online (Sandbox Code Playgroud)

即使这行得通,但复制代码似乎也不好。那么,对此的解决方案是什么?如果出现导入​​错误,如何使装饰器消失/不起作用?

han*_*olo 5

你可以只returnfunction自己喜欢的,

try:
    from numba import jit
except ImportError as err:
    jit = lambda x: x # return the function itself
Run Code Online (Sandbox Code Playgroud)