jk's notes
  • 包的组织方式

包的组织方式

服用优先使用模块, 就是将函数, 类等放在单独的文件中. 使用的时候使用 import 导入:

  • 文件中的定义方法没有特殊要求, 原来怎么写, 在模块中依旧怎么写.
  • 导入方式有多种:
    • import 模块名 [as 别名], 全部导入, 使用时模块名是命名空间.
    • from 模块名 import 成员 [as 别名], 导入特定成员. 存在命名冲突的风险, 所以考虑使用别名.
    • from 模块 import *, 导入所有成员, 且无命名空间. 不推荐该用法.
    • from . import xxx 包内的相对导入, 可以使用当前目录 ., 上级目录 ...

当模块很多时, 可以将其统一放到一个文件夹中, 并在文件夹中提供 __init__.py 文件, 来配置模块.

my_package/
├── __init__.py
├── module_a.py
└── subpackage/
    └── module_b.py

__init__.py 用于同于管理模块, 确定哪些可以导出:

# my_package/__init__.py
from .module1 import add
from .module2 import Calculator

__all__ = ["add", "Calculator"]  # 控制 from my_package import * 的行为
Last Updated:
Contributors: jk