把“定义”和“执行”拆成两步就明白了: 定义阶段(MAKE_FUNCTION) 把一段字节码包装成 可调用的函数对象(带名字、作用域、默认参数等), 相当于 C/Java 里的“把函数体编译好并放入符号表”。 执行阶段(CALL_FUNCTION) 真正把函数对象拿来运行,执行函数体里的字节码, 相当于“实际调用函数”。 “定义”≠“运行”——MAKE_FUNCTION 只是 造出可调用实体, CALL_FUNCTION 才是 真正跑函数体。