如何简化Python中带有相同公共前缀的冗余import导入语句?
Python长导入路径简化方案
方法1:直接为公共父包设置别名
Python原生支持为导入的包设置自定义别名,你可以先将重复的公共前缀包导入并设置短别名,后续直接通过别名调用子模块或对象即可:
# 先为公共前缀包设置短别名 import mylibs.master_lib.digital_assistant as da # 后续导入简化写法示例 from da.web_bots.google_bot import searchGoogle from da.web_bots.social_media_connect import wa_pag from da.languages import access_dictionary from da.digital_assistant import speech_to_text from da.user_interface import * from da.web_bots.social_media_connect import * from da.webAppsOC import * from da.device_controller import * from da.computer_graphics import * from da.desktopAppsFiles import *
这种方式不需要修改原库的任何代码,不会破坏原有清晰的命名规范,同时大幅减少导入语句的冗余。
方法2:通过包的__init__.py预导出内容(适配自定义项目包场景)
如果你要简化的是自己开发的自定义包,可以在公共前缀包的__init__.py文件中提前导入常用的子模块、方法或类,后续外部导入时可以进一步省略深层子路径:
- 首先在
mylibs/master_lib/digital_assistant/__init__.py中添加预导入逻辑:
# 预导出常用对象和子模块 from .web_bots.google_bot import searchGoogle from .web_bots.social_media_connect import wa_pag from .languages import access_dictionary from .digital_assistant import speech_to_text from . import user_interface from . import web_bots from . import webAppsOC from . import device_controller from . import computer_graphics from . import desktopAppsFiles
- 业务代码中导入时可以直接简化为:
import mylibs.master_lib.digital_assistant as da # 直接从别名对象获取所需内容,无需写深层路径 searchGoogle = da.searchGoogle wa_pag = da.wa_pag speech_to_text = da.speech_to_text # 子模块也可以直接调用 from da import user_interface from da.web_bots import *
注意事项
- 尽量避免频繁使用通配符
*导入,容易污染当前命名空间,也可能引发命名冲突,更推荐按需导入具体的方法、类或子模块 - 别名尽量保持简单表意,比如用
da对应digital_assistant,避免使用过于生僻的别名降低代码可读性
内容的提问来源于stack exchange,提问作者HIMANSHU PANDEY
相关产品推荐
相关产品推荐

