网站首页 > 资源文章 正文
这篇文章,介绍 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 模块。
打开终端,导入后输出:
猜你喜欢
- 2024-10-19 组件库Lerna Monorepo、Vite 和 Storybook
- 2024-10-19 STM32CubeMX教程1---安装与使用(stm32cubeide安装)
- 2024-10-19 玩转群晖NAS,影音篇:神级下载工具Transmission,及配置
- 2024-10-19 基于Sublime Text编辑器配置Python解释器
- 2024-10-19 搭建内网Linux CentOS yum源,摆脱依赖包困扰
- 2024-10-19 R语言实战—自学笔记—入门(r语言入门经典)
- 2024-10-19 如何使用逻辑回归从头开始创建分类器
- 2024-10-19 前端多包管理工具lerna使用详解(前端包管理器)
- 2024-10-19 如何在一个工程下管理多个npm包?多包管理工具lerna了解一下
- 2024-10-19 Python3基础之构建setup.py(python 构建)
你 发表评论:
欢迎- 最近发表
-
- YouTube应用下载全攻略:安卓、iOS及视频下载指南
- 谷歌浏览器Chrome 38.0.2125.101稳定版下载
- 谷歌浏览器(Chrome)官方网站下载地址
- 谷歌浏览器 Chrome v78.0.3904.108 正式版发布(附下载地址)
- 抛弃Windows吧!谷歌推免费Chrome系统,一个U盘就搞定
- 微软免费AR手游《我的世界Earth》上架:仅66MB
- 三星Note4升级安卓6.0.1出现怪异现象,求大神支招解决
- 红米k40手机4*1天气插件(红米k40pro天气设置到桌面)
- 一加11拆解:隐藏在强悍性能下的还有你不知道的细节
- 三星Galaxy Note 4/Edge 直升安卓5.0.1
- 标签列表
-
- 电脑显示器花屏 (79)
- 403 forbidden (65)
- linux怎么查看系统版本 (54)
- 补码运算 (63)
- 缓存服务器 (61)
- 定时重启 (59)
- plsql developer (73)
- 对话框打开时命令无法执行 (61)
- excel数据透视表 (72)
- oracle认证 (56)
- 网页不能复制 (84)
- photoshop外挂滤镜 (58)
- 网页无法复制粘贴 (55)
- vmware workstation 7 1 3 (78)
- jdk 64位下载 (65)
- phpstudy 2013 (66)
- 卡通形象生成 (55)
- psd模板免费下载 (67)
- shift (58)
- localhost打不开 (58)
- 检测代理服务器设置 (55)
- frequency (66)
- indesign教程 (55)
- 运行命令大全 (61)
- ping exe (64)
本文暂时没有评论,来添加一个吧(●'◡'●)