Python的完整执行流程是怎样的?.py文件运行机制详解
Python
.py 文件完整执行流程 常说Python是解释型语言,实际是相对C/C++这类全量预编译为原生机器码的语言而言的,Python本身也内置编译环节,只是整个过程对用户完全透明,无需手动调用编译工具。完整执行流程分为4个阶段:
1. 源码预处理与词法分析
- 解释器首先读取目标
.py文件的纯文本内容,按文件声明的编码(默认Python3为UTF-8)解析为Unicode字符串 - 过滤注释、多余空行、转义字符等无效内容后,将字符串拆分为符合Python语法规则的最小单元(token),比如关键字、标识符、运算符、字面量等
2. 语法分析与AST生成
- 词法分析输出的token流会按照Python语法规则组装为抽象语法树(AST),每个树节点对应源码中的一个语法结构,比如变量赋值语句、函数定义块、for循环逻辑等
- 如果这一阶段检测到语法错误(比如缩进错误、少写括号),会直接抛出
SyntaxError,执行流程直接终止
3. 编译生成字节码
- 验证合法的AST会被编译为Python字节码,这是Python专属的平台无关中间代码,和C语言编译生成
.asm汇编代码的阶段作用类似,只是字节码不能直接被CPU识别,只能由Python虚拟机(PVM)读取 - 如果当前是导入第三方模块/包的场景,生成的字节码会被缓存到对应模块目录下的
__pycache__文件夹中,后缀为.pyc;后续再运行相同模块时,只要源码没有修改,就会直接读取缓存的字节码,跳过前面三步,大幅提升加载速度
4. 虚拟机解释执行字节码
- 最终字节码会被送入Python虚拟机逐行翻译为对应平台的原生机器码,交给CPU执行,对应C语言流程中汇编、链接、执行的全流程
- 运行过程中如果触发运行时错误(比如变量未定义、列表索引越界、类型不匹配),会直接抛出对应异常,终止当前执行链路
和C语言执行流程的核心差异:C语言是提前完成全量编译、汇编、链接,生成对应平台的原生可执行文件,运行时直接由操作系统加载执行;Python则是运行时才做编译(或读字节码缓存),生成的字节码跨平台通用,由对应平台的Python虚拟机完成最终执行,这也是Python代码可以“一次编写,到处运行”的核心原因。
内容的提问来源于stack exchange,提问作者Mustafa
相关产品推荐
相关产品推荐

