1. 符号表:编译时的 “静态清单”
符号表是 Python 代码在编译阶段生成的 静态信息集合,主要存储在代码对象(code object)的一系列属性中,包括:
co_names:非局部变量 / 函数 / 类的名字(如 open、print 等外部引用的标识符);
co_varnames:局部变量名(如函数内定义的变量、参数等);
co_consts:代码中用到的常量(如字符串 'a.txt'、数字、None 等);
co_argcount:函数参数数量;
co_flags:代码块的标志(如是否是函数、是否有 *args 等)。
核心特点:
- 静态:编译时确定,不会随程序运行而改变;
- 无具体值:只记录 “有哪些名字 / 常量 / 参数”,不存储这些名字对应的实际对象(如函数、变量的值);
- 作用:供字节码指令快速索引(如
LOAD_NAME 0 直接通过索引找 co_names[0] 的名字)。