包是包含各种函数以执行特定任务的容器。例如,math 包包括 sqrt()
函数来执行数字的平方根。
在处理大型项目时,我们必须处理大量代码,将所有内容都写在同一个文件中会使我们的代码看起来混乱。相反,我们可以通过将相关代码放在包中,将代码分离成多个文件。
现在,我们可以在项目中需要时使用该包。这样我们也可以重用我们的代码。
Python 编程中的包模型结构
假设我们正在开发一个游戏。包和模块的一种可能的组织方式如下图所示。

注意:目录必须包含一个名为 __init__.py
的文件,Python 才能将其视为一个包。此文件可以留空,但我们通常将该包的初始化代码放在此文件中。
从包中导入模块
在 Python 中,我们可以使用点 (.) 运算符从包中导入模块。
例如,如果我们要导入上述示例中的 start
模块,可以按如下方式完成
import Game.Level.start
现在,如果此模块包含一个名为 select_difficulty()
的函数,我们必须使用完整名称来引用它。
Game.Level.start.select_difficulty(2)
不带包前缀的导入
如果此构造看起来很长,我们可以不带包前缀导入模块,如下所示
from Game.Level import start
现在我们可以直接调用该函数,如下所示
start.select_difficulty(2)
仅导入所需功能
from Game.Level.start import select_difficulty
现在我们可以直接调用这个函数。
select_difficulty(2)
虽然更简单,但不建议使用此方法。使用完整的命名空间可以避免混淆并防止两个相同的标识符名称冲突。
导入包时,Python 会在 sys.path
中定义的目录列表中查找,类似于模块搜索路径。