不确定这是否偏离主题,但不知道有什么更好的地方可以问。其中cpython有一个非常巨大的switch case语句用于执行每个操作码。此开关盒先前已放置在_PyEval_EvalFrameDefault函数中。链接在这里。switch case 语句从这里开始。这是 cpython 的核心部分,每个对 cpython 内部结构感兴趣的人可能都会详细探索它。最近我在找它,但没有找到。在这个版本中_PyEval_EvalFrameDefault我找不到它。比上一篇短多了。我什至尝试通过在 IDE 中搜索操作码来找到此 switch 语句。但即便如此也无助于找到它在哪里。任何了解最新 cpython 开发变化的人都可以帮助我吗?提前致谢。
它位于 中Python/generated_cases.c.h,它被插入到_PyEval_EvalFrameDefault中#include "generated_cases.c.h"。
正如您可能从名称中猜到的那样,generated_cases.c.h它是生成的代码。您可以在中看到代码生成器Tools/cases_generator/generate_cases.py