1. 首页
  2. 技术文章

22、Python包

在本文中,您将学习使用Python包将代码库划分为干净,高效的模块。此外,您还将学习在Python程序中导入和使用自己的或第三方程序包。

什么是包?

通常,我们通常不会将所有文件存储在同一位置的计算机上。我们使用井井有条的目录层次结构,以便于访问。

相似的文件保存在同一目录中,例如,我们可以将所有歌曲保留在“ music ”目录中。与此类似,Python具有用于目录的包和用于文件的模块

随着我们的应用程序规模越来越大,其中包含许多模块,我们将相似的模块放在一个程序包中,而将不同的模块放在不同的程序包中。这使项目(程序)易于管理且概念清晰。

同样,由于目录可以包含子目录和文件,因此Python程序包可以具有子程序包和模块。

目录必须包含一个名为的文件__init__.py,Python才能将其视为一个包。该文件可以保留为空,但是我们通常将该程序包的初始化代码放入此文件中。

这是一个例子。假设我们正在开发一个游戏。软件包和模块的一种可能组织如下图所示。

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,类似于模块搜索路径

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站不拥有所有权,不承担相关法律责任。如发现有侵权/违规的内容, 联系QQ1841324605,本站将立刻清除。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

服务热线:130-0886-1890

QR code