如何精简Python导入代码行?未来新增模块时如何简化?
Python多模块批量导入的简化方案
针对你这种重复的from xxx import *导入场景,有两种实用的简化方式,尤其适合未来新增模块的情况:
1. 利用包的__init__.py统一管理(推荐)
把所有州相关的模块放到一个自定义包中(比如命名为states),然后在包的__init__.py文件中统一写入导入语句:
# states/__init__.py from .wisconsion1 import * from .alaska1 import * from .texas1 import * from .indiana1 import *
之后在主代码里只需要一行导入即可:
from states import *
未来新增模块时,只需要在states/__init__.py里添加对应的from .new_state import *语句,主代码完全不用修改。
2. 动态导入模块(无需调整目录结构)
如果不想调整现有文件结构,可以用importlib模块实现批量动态导入:
import importlib # 维护需要导入的模块名列表 state_modules = ["wisconsion1", "alaska1", "texas1", "indiana1"] for module_name in state_modules: module = importlib.import_module(module_name) # 将模块中非下划线开头的成员导入到当前命名空间 globals().update({k: v for k, v in module.__dict__.items() if not k.startswith('_')})
后续新增模块时,直接往state_modules列表里添加模块名即可。
注意事项
- 不管用哪种方式,
import *都可能引发命名冲突问题,尽量优先明确导入具体成员而非全量导入。 - 动态导入的方式灵活性高,但可读性和调试友好度不如显式的包管理方式。
内容的提问来源于stack exchange,提问作者Yasin
相关产品推荐
相关产品推荐

