Python3条件导入优化:如何二选一导入API兼容的fast/slow包?
优先导入兼容包的Python优雅实现
你可以通过直接尝试导入包并设置别名的方式,彻底消除重复的导入代码,同时实现优先用fast、回退到slow的逻辑,代码如下:
try: # 优先导入fast包,并用found作为别名 import fast as found except ImportError: # fast不可用时,导入slow包 import slow as found # 后续统一通过found别名导入所需模块,无需重复写两次导入逻辑 from found.UtilityFunctions import UtilityFunctions from found.Utilities.Log import Log from found.model.device_driver import DriverModel # 其他需要的导入...
说明
- 无需使用已废弃的
imp模块:Python 3.4+推荐直接用标准导入系统处理这类场景,try-except ImportError的方式更简洁可靠,还能覆盖imp.find_module无法处理的包结构问题。 - 别名
found统一了后续导入的前缀,所有API兼容的子模块都可以通过这个别名导入,完全避免了复制粘贴的重复代码。 - 这种写法符合Python的"请求原谅比请求许可更好"(EAFP)风格,是处理这类导入场景的标准做法。
内容的提问来源于stack exchange,提问作者vijayvithal
相关产品推荐
相关产品推荐

