一、案例演示
工程目录如下:
import mytools
def print_hi(name):
mytools.print_hello()
mytools.print_python()
if __name__ == '__main__':
print_hi('PyCharm')
--------------------------------------------------
def print_hello():
print("hello")
def print_python():
print("python")
mytools.py 提供函数工具,给 main.py 使用。
二、工程目录
在运行了 main.py之后,打开我们的工程目录,可以看到工程里多了一个目录:pycache。
进入后,可以看到有个文件:mytools.cpython-39.pyc,跟我们提供的工具文件 mytools.py 有相同的文件名前缀。
三. mytools.cpython-39.pyc 解释
1. pyc文件
pyc文件的 c,是 comiled (编译过)的意思。
cpython-39 表示 python 解释器的版本。这个 pyc 文件是由 python 解释器将模块的源码转换为字节码,python 这样保存字节码,是作为一种启动速度的优化。
2. 字节码
- 首先处理源代码,编译生成一个二进制字节码
- 再对字节码进行处理,才会生成CPU能够识别的机器码
- 有了模块的字节码文件之后,下一次运行程序时,如果在上次保存字节码之后没有修改过源代码,Python将会加载.pyc文件并跳过编译这个步骤
- 当Python重编译时,它会自动检查源文件和字节码文件的时间戳
- 如果你又修改了源代码,下次程序运行时,字节码将自动重新创建
|