Python中_init_.py的作用
- _init_.py可以用来区分普通文件夹以及Python package
- _init_.py会在导入模块的时候执行,因此可以在此设置相应的环境变量
- _init_.py可以定义方法和变量,这些方法和变量可以通过包名.属性名或者包名.方法名进行调用
- 简化模块导入
- import *是将_init_.py中__all__列表中的包全部导入
import导入问题
- 导入方式
import pyscf
from pyscf import gto, scf
两种导入方式的区别:
from import可以导入模块中的函数/变量/类等
import只能导入的模块就是包目录,无法细分到函数/变量/类d等
-
哪些东西可以被导入?
- 模块文件(.py文件)
- C或C++扩展(已编译为共享库或DLL文件)
- 目录/包(包含多个模块,不一定要有_init_.py)
- 內键模块(使用C编写并已链接到Python解释器中)
-
关于.pyc 文件 与 .pyo 文件
.py文件的汇编,只有在import语句执行时进行,当.py文件第一次被导入时,它会被汇编为字节代码,并将字节码写入同名的.pyc文件中。后来每次导入操作都会直接执行.pyc 文件(当.py文件的修改时间发生改变,这样会生成新的.pyc文件),在解释器使用-O选项时,将使用同名的.pyo文件,这个文件去掉了断言(assert)、断行号以及其他调试信息,体积更小,运行更快。(使用-OO选项,生成的.pyo文件会忽略文档信息)