8.8 创建一个 Code Object

makecode() 的任务是检查编译器状态和汇编器的一些属性,并通过调用 PyCode_New() 将这些属性放入 PyCodeObject 中。

变量名和常量作为属性放到 code object 中:

代码不翻译

你还可能注意到,字节码被送到 PyCode_NewWithPosOnlyArgs() 之前被送到 PyCode_Optimize()。此函数是 Python/peephole.c 中字节码优化过程的一部分。

窥孔(peephole)优化器检查字节码指令,并在某些情况下用其他指令替换它们。例如,有一个优化器,它可以删除 return 语句之后的任何无法访问的指令。

Last updated