Python 包

包是包含各种函数以执行特定任务的容器。例如,math 包包括 sqrt() 函数来执行数字的平方根

在处理大型项目时,我们必须处理大量代码,将所有内容都写在同一个文件中会使我们的代码看起来混乱。相反,我们可以通过将相关代码放在包中,将代码分离成多个文件。

现在,我们可以在项目中需要时使用该包。这样我们也可以重用我们的代码。


Python 编程中的包模型结构

假设我们正在开发一个游戏。包和模块的一种可能的组织方式如下图所示。

Package Model Structure
游戏包模型结构

注意:目录必须包含一个名为 __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 中定义的目录列表中查找,类似于模块搜索路径

视频:Python 包:组织你的代码

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战