包的使用
一, 定义
包是集合了一组 py 文件, 提供了一组复杂的功能
当提供一组复杂的功能, 一个 py 文件放不下的时候需要用到包
每一个 pack 包中必须包含一个__init__.py 文件, 这是包和目录的区别
导入包相当于执行了包下边的__init__.py 文件
二, 从包中导入模块的方式
方式一: 直接导入
import pack1.pack2.pack3. 模块名
pack1.pack2.pack3. 模块名. 变量 / 函数名
import pack1.pack2.pack3. 模块名 as 别名
别名. 变量 / 函数名
from pack1.pack2.pack3 import 模块名
模块. 变量 / 函数名
这种方式更加常用
方式二: 复杂的导入
首先必须每一级的包的__init__.py 文件中都加上 pack 的导入路径
再按照方式一的方式来导入文件
init.py 文件中 pack 导入包的路径:
使用绝对路径导入: from pack1 import pack2-->from pack1.pack2 import pack3,
每一级的导入都必须是绝对路径, 这种方式在包的位置不改变的情况下是适用的, 但是如果包的位置发生改变就会报错.
使用相对路径导入: 在每一级的__init__.py 文件中写入 from . import 下一级的 pack / 模块名, 这样可以有效的避免绝对路径的问题.
需要特别注意的是: 使用了相对路径导入的文件只能被当做模块来使用, 不能被当作脚本文件来执行, 如果到做脚本文件来执行程序会报错.
复杂的导入适用于整个包文件的开发, 这个包给其他开发者使用的情况, 日常的练习中直接导入方式就可以满足需求.
三, 查看包 / 模块 / 文件的路径
在代码中查看路径需要用到 sys 模块
来源: http://www.bubuko.com/infodetail-3415712.html