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