python包(模块包) package
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python包(模块包) package,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2096字,纯文字阅读大概需要3分钟。
内容图文
![python包(模块包) package](/upload/InfoBanner/zyjiaocheng/838/b5c3e6672b35449c8ba217c53879e80e.jpg)
1、包(模块包) package
包是将模块以文件夹的组织形式进行分组管理的方法
作用:
将一系列模块进行分类管理,有利于防止命名冲突
可以在需要时加载一个或部分模块,则不是全部模块
![python包(模块包) package - 文章图片](/upload/getfiles/0001/2021/5/6/20210506055119038.jpg)
![python包(模块包) package - 文章图片](/upload/getfiles/0001/2021/5/6/20210506055119098.jpg)
包示例: mypack/ __init__.py menu.py games/ __init__.py contra.py supermario.py tanks.py office/ __init__.py excel.py word.pyView Code
2、包的导入:
同模块的导入规则
import 包名 [as 包别名]
import 包名.模块名 [as 模块新名]
import 包名.子包名.模块名 [as 模块新名]
from 包名 import 模块名 [as 模块新名]
from 包名.子包名 import 模块名 [as 模块新名]
from 包名.子包名.模块名 import 属性名 [as 属性新名]
from 包名 import *
from 包名.模块名 import *
...
3、import 语句搜索包的路径的顺序
1. 搜索程序的运行时路径(当前工作目录)
2. sys.path提供的路径
4、包的 __init__.py 文件
__init__.py 是常规包内必须存在的文件
__init__.py 会在包加载时被自动调用
__init__.py 内的__all__ 列表
作用:
用来记录此包中有哪儿些子包或模块需要导入当用from 包 import * 语句导入模块时,只查找__all__中所有模块或子包
说明:
__all__ 列表只对 from xxx import *语句起作用
![python包(模块包) package - 文章图片](/upload/getfiles/0001/2021/5/6/20210506055119038.jpg)
![python包(模块包) package - 文章图片](/upload/getfiles/0001/2021/5/6/20210506055119098.jpg)
__all__ = ['contra', 'tanks'] # 此示列会影响 # from mypack.games import * 导入时,会导入contra 模块 # 和 tanks 模块 print("mypack.games里的__init__.py 被调用")View Code
5、包的相对导入
包的相对导入是指包内模块的相互导入
语法:
from 相对路径包或模块 import 属性或模块名
或
from 相对路径包或模块 import *
相对路径:
在 from import 语句和 from import *语句中可以使用相对导入from 和 import 间可以用相对路径
. 代表当前目录
.. 代表上一级目录
... 代表上二级目录
.... 以此类推
注: 相对导入时不能超出包的外部
# file: mypack/games/contra.py
![python包(模块包) package - 文章图片](/upload/getfiles/0001/2021/5/6/20210506055119038.jpg)
![python包(模块包) package - 文章图片](/upload/getfiles/0001/2021/5/6/20210506055119098.jpg)
def play(): print("正在玩魂斗罗!") def game_over(): print("游戏结束!") # 用绝对导入 # from mypack.menu import show_menu # 相对导入 from ..menu import show_menu show_menu() # 调用tanks里的play函数 # from .tanks import play from ..games.tanks import play # 如下是错的, ... 已经超出的包的最外部 # from ...mypack.game.tanks import play play() print("魂斗罗模块被加载!!!")View Code
内容总结
以上是互联网集市为您收集整理的python包(模块包) package全部内容,希望文章能够帮你解决python包(模块包) package所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。