我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈
入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈
虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈
PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)文章合集 👈👈
Oracle数据库教程:👉👉 Oracle数据库文章合集 👈👈
优 质 资 源 下 载 :👉👉 资源下载合集 👈👈
Python基础语法_程序执行机制
Python程序执行机制
- 执行步骤:
- python源文件执行的时候,首先识别源码中是否包含import语句导入其他模块(包)
- 没有import语句:
- 将源码a.py进行编译,生成PyCodeObject(字节码)<存储在内存中,并不会生成.pyc持久化文件>
- 根据源文件a.py生成的PyCodeObject进行解释执行
- 有import语句:
- 判断是否存在已经编译好的b.pyc文件(持久化的字节码文件)
- 存在已经编译好的pyc文件:
- 判断pyc文件中存储的源文件修改时间是否与源文件b.py的真实修改时间一致
- 修改时间一致:
- 根据b.pyc文件中的PyCodeObject进行解释执行
- 根据源文件a.py生成的PyCodeObject进行解释执行
- 修改时间不一致:
- 重新编译源码b.py,生成PyCodeObject
- 将编译结果存储到可执行文件b.pyc,并且记录源码最后修改时间
- 根据b.pyc文件中的PyCodeObject进行解释执行
- 根据源文件a.py生成的PyCodeObject进行解释执行
- 没有已经编译好的pyc文件:
- 重新编译源码b.py,生成PyCodeObject
- 将编译结果存储到可执行文件b.pyc,并且记录源码最后修改时间
- 根据b.pyc文件中的PyCodeObject进行解释执行
- 根据源文件a.py生成的PyCodeObject进行解释执行
- 总结:python语言既不是单纯的解释型语言,也不是单纯的编译型语言。
手动编译Python源码为pyc持久化文件
- 语法:
python -m py_compile filename.py
- 编译后的可执行文件可以对源文件有一定的保护作用,但是也架不住反编译。