模块预编译
pyc文件是py文件编译后生成的字节码文件(byte code)。pyc文件经过python解释器最终会生成机器码运行。所以pyc文件是可以跨平台部署的,类似Java的.class文件。一般py文件改变后,都会重新生成pyc文件。
在你 import 别的 py 文件时,那个 py 文件会被存一份 pyc 加速下次装载。而主文件因为只需要装载一次就没有存 pyc,你可以写两个 a.py 和 b.py,一个 import 另一个试试看。在python3中,会在当前目录的__pycache__生成pyc文件,只要pyc的文件旧于py文件,就回自动再次生成。
__name__属性
模块里面有一个属性__name__,当模块被当作脚本运行时(执行自己文件), name__为__main; 否则等于模块名,如 import.
比如:test.py
print('1+2')
if __name__ == '__main__':
print('__ name is __main')
elif __name__ == 'test':
print('__name__ is test')
引入test模块:
import test
输出:
1+2
name is test
python test.py
输出:
1+2
name is main
Package
Package是一个比模块更大一级的结构。一个 package可以包含package和module.一般一个package是一个独立目录,里面有一个__init__.py文件,记录了 package的信息,指明如何加载这个package。