前端开发入门到精通的在线学习网站

网站首页 > 资源文章 正文

Python 中的包 Packages(python中包的作用)

qiguaw 2024-10-19 07:56:04 资源文章 21 ℃ 0 评论

这篇文章,介绍 Python 中的包(Package)是什么。一个包可以包含多个模块(module)。

包是一个目录,里面包含一些 Python 文件和 一个名字是 __init__.py 的文件。就是说,只要目录里有个 __init__.py 的文件,你就可以把它当做一个包。

包名相当于模块的命名空间 Namespace,访问的时候使用点操作符 dotted module names 访问。例如 A.B 意思是包名为 A,访问它里面的模块 B。

不同的包里面可以有相同名称的模块。

例子


要创建一个包,首先创建一个目录。假定我们要创建的包名是 simple,就要创建一个名字是 simple 的目录,然后里面再添加一个文件 __init__.py。这样包 simple就创建完成了。

接下来添加一个模块,比如叫 foo,就是要创建一个文件名是 foo.py 的文件,添加如下代码:

现在,进入到 shell 交互环境:

注意首先切换到 simple 的目录,然后进入到交互环境。这样导入模块是就可以在当前路径中查找,默认当前路径是在 Python 的搜索路径中。

我们可以看到,使用 import simple 成功导入。但是通过点操作符访问模块 foo,提示属性未找到。

模块 foo 没有导入进来,我们可以使用 from ... import ... 导入模块。

也可以使用点操作符直接导入 foo 模块:

使用 from simple import foo 导入了模块 foo,也可以访问模块的 bar 方法。

自动导入模块


当我们使用 import simple 导入 simple 包时,不会自动导入 foo 模块。那么,怎么样才能自动导入 foo 呢?只需要修改 __init__.py ,使用 import 语句导入 foo 模块。

接着退出终端,重新进入,导入 simple,请看输出:

当导入 simple 时,__init__.py 文件自动执行,第一行语句导入了模块 foo。在终端上显示,可以成功访问到。

__init__.py 文件的第二行打印了一行简单的字符串,当导入 simple 时,可以在终端上看到输出。

使用相对路径导入模块


包可以嵌套,假如在 simple 包中,嵌套了一个子包叫 sub,目录结构如下:

如果想在 sub 包导入的时候,自动导入 simple.foo 模块,可以在 sub/__init__.py 中导入:

这里使用 from .. import foo,从上级包导入模块 foo。.. 代表上级包。

切换到终端,查看导入后结果:

注意,不仅仅导入了 foo 模块,simple/__init__.py 也自动执行了

使用 from . import x 代表从当前包导入模块 x,例如在 sub 包中增加一个模块 ss.py。

那么可以在 sub/__init__.py 使用 from . import ss 自动导入 ss 模块。

打开终端,导入后输出:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表