为了方便项目管理,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. 基于机器学习的入侵检测系统
  2. 数字资产交易所IM即时通讯社交系统APP开发
  3. from torch._C import * ImportError: DLL load failed: 找不到指定的模块。
  4. ML:MLOps系列讲解之《MLOps的State(工具和框架)》解读
  5. 台达b2伺服modbus通讯_台达C2000促进油毛毡切割包装机的发展
  6. 锋利的Jquery摘要
  7. 老程序员也搞不定的 4 个巨坑!
  8. Phoenix+Hbase二级索引
  9. javascript 自动完成下拉框
  10. 12v直流电机并联多大电容_对电容的理解
  11. 图论--哈密顿路与欧拉路
  12. vi中 wq 、wq!、x、q、q!区别
  13. 加息+四巫日铁矿石大跌,棕榈油认沽最高30倍,豆一09-01继续反套2022.6.15
  14. 在线书籍阅读,免费搭建站点
  15. 微软.Net 社区虚拟大会 -- 首日重点(dotnetConf 2016)
  16. 深入浅出Spring源码:IOC原理解析(一)
  17. MT4外汇平台哪家靠谱?靠谱的MT4外汇平台有什么特征?
  18. 八本最佳管理书籍,你读过几本?
  19. 经纬度中的度分秒转化为小数形式
  20. 分形、分形几何、数据可视化、Python绘图

热门文章

  1. 四、Transforms
  2. 下载神器-IDM使用教程及下载
  3. 海康威视摄像头 onvif 鉴权
  4. java实现从http/https链接地址下载文件
  5. PyQt5 从零开始环境搭建
  6. 盘点2020年最好用的6大智能建站工具,建议收藏
  7. 短信发送验证码实现验证
  8. 【2018VR眼镜评测】VR一体机哪个好?UGP VR一体机怎么样?UGP VR 一体机值入手吗?
  9. 特征选择,熵,条件熵,信息增益
  10. 计算机主板用塑料做的好吗,旧电脑零件千万别扔 重新利用竟还能做出这么多新设备...