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]
的名字)。