Jul*_* S. 5 python python-import python-decorators
假设我有以下代码:
try:
import bar
except ImportError:
bar = None
@bar.SomeProvidedDecorator
def foo():
pass
Run Code Online (Sandbox Code Playgroud)
其中bar是一个可选的依赖项。如果 bar 未导入,则上面的代码将失败。有没有推荐的方法来处理这个问题?
我想出了:
try:
import bar
except ImportError:
bar = None
def foo():
pass
if bar is not None:
foo = bar.SomeProvidedDecorator(foo)
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有更好的方法来处理这个问题(即有没有办法保留装饰器语法)?
在bar不可用的情况下提供标识装饰器:
try:
import bar
except ImportError:
class bar:
SomeProvidedDecorator = lambda f: f
Run Code Online (Sandbox Code Playgroud)