为了方便项目管理,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)相关推荐

  1. python中模块(Module)和包(Package)的区别 (导入模块、导入包)(import导包)

    如下结构,mycompany就是包,abc.py和xyz.py就是模块 mycompany ├─ __init__.py ├─ abc.py └─ xyz.py 参考文章:Python中模块(Modu ...

  2. Python中第三方的库(library)、模块(module),包(package)的安装方法以及ImportError: No module named...

    Python中,想要安装第三方安装包,即third library,package等,对于熟悉的人来说,很简单. 但是对于新手,至少对于之前的我,很难,往往只是安装一个很小的包,都被搞得一头雾水. 现 ...

  3. python中大括号是什么_Python中模块(Module)和包(Package)到底是什么,有什么区别?...

    1. 模块(Module) 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个 ...

  4. python package什么意思_Python模块、包(Package)概念与用法分析

    本文实例讲述了python模块.包(package)概念与用法.分享给大家供大家参考,具体如下: python中"模块"的概念 在开发中,我们会有很多函数,我们可以把这些函数都放到 ...

  5. Python的包(package)和模块(module)的区别,如何导入python包和模块,以及为什么可以把包名当作一个模块导入

    本文主要讨论标题中的三大问题,接下来逐一分析: 文章大部分内容转载并重新整理自https://zhuanlan.zhihu.com/p/33913131 1. Python的包(package)和模块 ...

  6. python的包package

    目录 pip是啥?pip和pip3的区别是啥? 模块与包的区别: __init__.py文件的主要作用是: __pycache__文件夹的作用 今日无聊,想看看pip是啥? 众所周知,用python时 ...

  7. Python中的包(package)、模块(module)、方法(function)的逻辑关系

    1. 逻辑关系 首先给出它们三个的结构关系:包→模块→方法,对应于英文就是:package→module→function. 2. 分类说明 包(package):包是一个类似文件夹的东西,它里面包含 ...

  8. python包引用问题

    python模块引用梳理 文件组织结构: 复制代码 t ├── __init__.py ├── main.py ├── t1 │ ├── A.py │ └── __init__.py └── t2 ├ ...

  9. Python 包安装和 postgresql 的一些问题

    今天安装 hgvs 这个 python 包的时候,遇到几个比较有代表性的问题,记录分享一下. hgvs is a Python package to parse, format, validate, ...

最新文章

  1. python中的有序字典
  2. 谷歌眼镜开发入门经典
  3. Android自动化之旅—生成渠道包
  4. viewmodel+livedata+binding 实现listview+adapter
  5. 前端session存储实例
  6. 数据可视化分析票房数据报告_票房收入分析和可视化
  7. 去除标题_资深运营导师-云中教你轻松写标题
  8. 颜宁:女性科学家如何更好的搞科研?
  9. 语义分割概念及应用介绍
  10. 第 11 个“世界备份日”刚过,《Veeam 2021 数据保护报告》为你解读全球数据备份现状
  11. springboot rabbitlistener注解_一文带你SpringBoot+RabbitMQ方式收发消息
  12. Python 项目实践二(生成数据)第二篇
  13. 微型计算机控制技术应用,微型计算机控制技术的发展及应用123.doc
  14. web渗透测试学习路线
  15. 51单片机最小系统板
  16. AIME数学竞赛信息大全
  17. nuc972 linux 升级,NUC972移植工作记录
  18. python玩扫雷_python实现扫雷小游戏
  19. decimal 和 numeric
  20. HP 笔记本电脑 - 笔记本电脑睡眠后如何唤醒

热门文章

  1. 移动互联网——2011年最值得关注的100个应用程序(目录)
  2. jq获取页面高度_使用jquery中height()方法获取各种高度
  3. excel 数据匹配、数据对应、建立数据映射关系(设置A对应1、B对应2)
  4. 分布式 —— 基于Raft算法的KV服务
  5. 【经验分享】大学生英语51汇听答案获取
  6. 全球最好的大学各专业排名
  7. 软考 | 2009年下半年 软件设计师 下午试卷
  8. 08.第九章.人力资源管理
  9. 选择模板建站这六个问题要提前注意
  10. Seo:秒排建站(三)主机推荐补充讲解