Python 包
Python 包
在本文中,您将学习使用 Python 包将代码库划分为干净、高效的模块。此外,您还将学习在 Python 程序中导入和使用您自己或第三方的包。
视频:Python 包:组织您的代码
什么是包?
我们通常不会将所有文件存储在计算机上的同一位置。我们使用组织良好的目录层次结构以便于访问。
类似的文件都保存在同一个目录下,比如我们可以把所有的歌曲都保存在“music " 目录。与此类似,Python 有目录包和文件模块。
随着我们的应用程序变得越来越大,包含很多模块,我们将相似的模块放在一个包中,将不同的模块放在不同的包中。这使得项目(程序)易于管理且概念清晰。
同样,一个目录可以包含子目录和文件,一个Python包也可以有子包和模块。
目录必须包含名为 __init__.py
的文件 为了让 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