Python 包(package)
为了方便项目管理,Python 通过包(package)
的方式来组织代码,包是一种特殊的模块(module)
。
Python 的包有Regular packages
和 namespace packages
。
Regular packages
指目录下有__init__.py文件,并且允许嵌套,即目录下可以嵌套一个同样是package的子目录。namespace packages
也是有层次结构的模块组织,不过它不必须存在于文件夹,可以存在Zip、网络上等,且子包与父包也不必存于同一个地方
假设一个例子:
parent/__init__.py
里的代码是:
print('床前明月光,')
假设parent/son1/__init__.py
里的代码是:
print('疑是地上霜,')
假设parent/son1/grandson/__init__.py
里的代码是:
print('举头望明月,')
假设parent/son2/__init__.py
里的代码是:
print('低头思故乡')
import一个模块后,python会把模块缓存在sys.modules
里,当再次导入的时候,__init__.py不会重新执行,而是直接从缓存里取。反之,如果我们从sys.modules
里把导入的模块删除,则再次import
会再次触发执行__init__.py。
下面导入模块的用法中,为什么不能循环打印出《静夜思》这首诗呢?
import sysif __name__ == '__main__':while True:// 打印出“床前明月光,”import parent '''打印出“疑是地上霜。举头望明月,” 。如果没有第一句,这一句可以打印出“床前明月光,疑是地上霜。举头望明月,”因为第一句已经把parent/__init__.py触发了,并存储到sys.modules,这一句就不会再触发这个init.py文件'''import parent.son1.grandson // 打印出“低头思故乡。” import parent.son2del sys.modules['parent'] //从sys.modules删除parent/__init__.pydel sys.modules['parent.son1.grandson '] //从sys.modules删除parent/son1/grandson/__init__.pydel sys.modules['parent.son2'] //从sys.modules删除parent/son2/__init__.py'''循环一次之后,sys.modules中还存在parent/son1/__init__.py,下一次及以后的循环,这个py 文件中的内容都不会在此被触发'''
Python 包(package)相关推荐
- python中模块(Module)和包(Package)的区别 (导入模块、导入包)(import导包)
如下结构,mycompany就是包,abc.py和xyz.py就是模块 mycompany ├─ __init__.py ├─ abc.py └─ xyz.py 参考文章:Python中模块(Modu ...
- Python中第三方的库(library)、模块(module),包(package)的安装方法以及ImportError: No module named...
Python中,想要安装第三方安装包,即third library,package等,对于熟悉的人来说,很简单. 但是对于新手,至少对于之前的我,很难,往往只是安装一个很小的包,都被搞得一头雾水. 现 ...
- python中大括号是什么_Python中模块(Module)和包(Package)到底是什么,有什么区别?...
1. 模块(Module) 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个 ...
- python package什么意思_Python模块、包(Package)概念与用法分析
本文实例讲述了python模块.包(package)概念与用法.分享给大家供大家参考,具体如下: python中"模块"的概念 在开发中,我们会有很多函数,我们可以把这些函数都放到 ...
- Python的包(package)和模块(module)的区别,如何导入python包和模块,以及为什么可以把包名当作一个模块导入
本文主要讨论标题中的三大问题,接下来逐一分析: 文章大部分内容转载并重新整理自https://zhuanlan.zhihu.com/p/33913131 1. Python的包(package)和模块 ...
- python的包package
目录 pip是啥?pip和pip3的区别是啥? 模块与包的区别: __init__.py文件的主要作用是: __pycache__文件夹的作用 今日无聊,想看看pip是啥? 众所周知,用python时 ...
- Python中的包(package)、模块(module)、方法(function)的逻辑关系
1. 逻辑关系 首先给出它们三个的结构关系:包→模块→方法,对应于英文就是:package→module→function. 2. 分类说明 包(package):包是一个类似文件夹的东西,它里面包含 ...
- python包引用问题
python模块引用梳理 文件组织结构: 复制代码 t ├── __init__.py ├── main.py ├── t1 │ ├── A.py │ └── __init__.py └── t2 ├ ...
- Python 包安装和 postgresql 的一些问题
今天安装 hgvs 这个 python 包的时候,遇到几个比较有代表性的问题,记录分享一下. hgvs is a Python package to parse, format, validate, ...
最新文章
- python中的有序字典
- 谷歌眼镜开发入门经典
- Android自动化之旅—生成渠道包
- viewmodel+livedata+binding 实现listview+adapter
- 前端session存储实例
- 数据可视化分析票房数据报告_票房收入分析和可视化
- 去除标题_资深运营导师-云中教你轻松写标题
- 颜宁:女性科学家如何更好的搞科研?
- 语义分割概念及应用介绍
- 第 11 个“世界备份日”刚过,《Veeam 2021 数据保护报告》为你解读全球数据备份现状
- springboot rabbitlistener注解_一文带你SpringBoot+RabbitMQ方式收发消息
- Python 项目实践二(生成数据)第二篇
- 微型计算机控制技术应用,微型计算机控制技术的发展及应用123.doc
- web渗透测试学习路线
- 51单片机最小系统板
- AIME数学竞赛信息大全
- nuc972 linux 升级,NUC972移植工作记录
- python玩扫雷_python实现扫雷小游戏
- decimal 和 numeric
- HP 笔记本电脑 - 笔记本电脑睡眠后如何唤醒