参考文献:
python 写自己的包(只看这一个)_python包怎么写-CSDN博客
Python入门 模块导入 import ...\from... import... - 知乎 (zhihu.com)
pyc文件究竟是用来干什么的?_23yy14.pyc-CSDN博客
一、创建Python包的条件:
1.创建python包的背景:
对于一段具有简单功能的代码,只需要在代码内用def设置函数即可。随着功能复杂化,需要将调动的函数单独写一个.py文件放在根目录下。随着功能进一步增多,需要按照功能的不同将代码拆分在不同的.py文件中,每个.py文件就是一个模块。
在创建了许多模块之后,我们可以把功能相近的模块组织在同一个文件夹下,该文件夹就是Python功能包。
二、Python包的组织架构:
1.包的创建形式:
本文采用常见的包组织架构,包目录下有很多子包,子包中含有许多模块。如下图所示,在matplotlib包①下有许多子包②以及包外运行的文件③。
/matplotlib
/__pycache
/__init__.cpython-311.pyc
/_api
/__pycache__
__init__.py
deprecation.py
/axes
/__pycache__
__init__.py
_axes.py
_base.py
_secondary_axes.py
__init__.py
_afm.py
..........
2.文件夹包__pycache__的作用:
打开后我们可以发现一系列的.pyc文件,是Python编译后的PythonCodeObject结果。当python程序运行时,编译的结果存于PyCodeObject,程序运行结束后,Python将PyCodeObject写入到pyc文件中,这是个字节码文件。
3.matplotlib包中子包的架构:
我们可以观察到子包的架构如下:__pycache__为_api的子包,__init__.py充当连接模块和包的连接文件,deprecation.py是具有一定功能的模块。
/matplotlib
/__pycache
/__init__.cpython-311.pyc
/_api
/__pycache__
__init__.py
deprecation.py
三、使用from...import...语句导入单个模块:
1.import...和from...import..的导入库使用方式:
①如果想要直接导入一个总包,可以使用“import matplotlib”直接导入。
②如果想要导入总包中的一个子包,以上述子包_api为例,使用“import matplotlib._api”导入。
③如果想向现有的包中导入其他包,可以使用“from ...import...”,例如向d2l包中导入matplotlib包并且仍命名为d2l,使用“from d2l import matplotlib as d2l”。