关于python包,模块,.pyc文件和文件导入理解

参考文献

一、包

包是一个文件夹,用来存放模块和子包。

包里一般会有一个__init__.py的文件(也可以没有)。

包里会有一个__pycache__文件夹,存放.py文件经解释器解释后的中间字节码(二进制文件)。

二、模块

可以作为模块的文件有.py、.pyc、.pyo、.pyd、.so、.dll文件。

三、.pyc文件与.pyo文件

这两个文件都是二进制文件,由python解释器将.py文件转化成的二进制文件,目的是加快解释速度且可以隐藏源代码。

python解释器在解释.py文件时,会优先查看是否有对应的最新的.pyc文件,有的话则直接加载.pyc文件。在加载之前,会检查.pyc文件是不是最新的(判断对应.py文件的修改时间),如果不是最新的,则解释.py文件。

.pyc文件可以由python自带模块py_compile生成,且会自动生成一个__pycache__文件夹存放.pyc文件。

如果没有.py文件,只有对应的.pyc文件,也可以调用,因为.pyc文件可以当作模块使用。

.pyo文件是对.pyc文件的优化版本,作用一致。

四、__init__.py文件的作用

__init__.py作用是将包变成一个模块(像.py一样的模块使用)

假如有个包名称为:package

1.在该文件中添加__all__=['os','sys','base64']变量,变量内存放着需要使用的模块名称。这样通过from package import *时,就可以将__data__列表内的模块加载进来。

2.在该文件中添加import os,这样通过package.os就可以调用这个包了(必须加包名)。

3.import package命令会隐式将__init__模块导入。也就是说可以直接通过package调用包里面调用的类,变量等信息。

4.如果在package包的__init__.py文件内通过import os导入了包os,在使用package包时使用from package import *,则可以直接使用os.

如果在__init__.py文件中通过from os import *,则在使用package包时使用from package import *,则可以直接使用os下面的所有函数和变量。

五、如何将自己写的模块放入包导入路径中

import sys

sys.path.append('your path')

一般将包或者模块放置在启动文件的当前目录

原文地址:https://www.cnblogs.com/zhuluqing/p/8832205.html