面试题答案
一键面试合理设计包结构避免循环引用并确保引用简洁清晰的方法
- 高内聚低耦合:每个模块应具有单一、明确的职责,模块间的交互应最小化且必要。例如,将数据处理相关功能集中在一个模块,将用户界面相关功能放在另一个模块,避免功能混杂导致不必要的相互依赖。
- 分层架构:将项目按功能层次划分,如数据层、业务逻辑层、表示层等。不同层次间遵循单向依赖原则,通常上层依赖下层,下层不依赖上层。例如,业务逻辑层依赖数据层获取数据,但数据层不依赖业务逻辑层。
- 模块化抽象:提取通用功能到独立模块,减少模块间直接依赖。例如,将日志记录功能封装成一个独立模块,各模块都依赖这个日志模块,而不是模块间相互处理日志相关引用。
相对导入示例
假设项目包结构如下:
my_project/
├── package1/
│ ├── module1.py
│ └── module2.py
└── package2/
├── module3.py
└── subpackage/
└── module4.py
在 package1/module2.py
中相对导入 module1.py
可以这样写:
from. import module1
在 package2/subpackage/module4.py
中相对导入 package2/module3.py
可以这样写:
from.. import module3
绝对导入示例
假设项目根目录在Python解释器的搜索路径中,在 package1/module2.py
中绝对导入 package2/module3.py
可以这样写:
from my_project.package2 import module3
在 package2/subpackage/module4.py
中绝对导入 package1/module1.py
可以这样写:
from my_project.package1 import module1