参考文献
一、包
包是一个文件夹,用来存放模块和子包。
包里一般会有一个__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')
一般将包或者模块放置在启动文件的当前目录