在线文档教程

symtable

symtable - 访问编译器的符号表

源代码: Lib / symtable.py

符号表由AST编译器在字节码生成之前生成。符号表负责计算代码中每个标识符的范围。symtable提供了一个界面来检查这些表格。

1.生成符号表

symtable.symtable(code, filename, compile_type)

返回SymbolTablePython源代码 的顶层。filename 是包含代码的文件的名称。compile_type 就像是模式参数compile()

2.检查符号表

class symtable.SymbolTable

块的命名空间表。构造函数不公开。

get_type()

返回符号表的类型。可能的值是'class''module''function'

get_id()

返回表格的标识符。

get_name()

返回表格的名称。如果表是用于类的话,这是类的名称,如果表是用于函数的函数的名称,或者'top'表是全局的(get_type()返回'module')。

get_lineno()

返回此表格中块的第一行的编号。

is_optimized()

如果此表中的当地函数可以优化,则返回True。

is_nested()

如果该块是一个嵌套类或功能,则返回True

has_children()

如果块已经在它嵌套的命名空间,则返回True

has_exec()

如果块使用exec,则返回True。

has_import_star()

如果块使用星号的从进口,则返回True

get_identifiers()

返回此表中符号名称的列表。

lookup(name)

在表中查找名称并返回一个Symbol实例。

get_symbols()

返回表中Symbol名称的实例列表。

get_children()

返回嵌套符号表的列表。

class symtable.Function

函数或方法的名称空间。这个类继承SymbolTable

get_parameters()

将包含参数名称的元组返回给此函数。

get_locals()

返回包含本函数名称的元组。

get_globals()

在此函数中返回包含全局变量名称的元组。

get_frees()

返回包含此函数中自由变量名称的元组。

class symtable.Class

类的名称空间。这个类继承SymbolTable

get_methods()

返回包含类中声明的方法名称的元组。

class symtable.Symbol

SymbolTable与源中的标识符对应的条目。构造函数不公开。

get_name()

返回符号的名称。

is_referenced()

如果符号在其块中使用,则返回True

is_imported()

如果符号是从导入语句创建的,则返回True

is_parameter()

如果符号是参数则返回True

is_global()

如果符号是全局的,则返回True

is_declared_global()

如果符号是用全局语句声明为全局的,则返回True

is_local()

如果符号位于其块的本地,则返回True

is_free()

如果符号在其块引用,但没有分配到,则返回True

is_assigned()

如果符号在其块分配,则返回True

is_namespace()

如果名称绑定引入新名称空间,则返回True

如果该名称用作函数或类声明的目标,则为true。

例如:

>>> table = symtable.symtable("def some_func(): pass", "string", "exec") >>> table.lookup("some_func").is_namespace() True

请注意,单个名称可以绑定到多个对象。如果结果是True,该名称也可以绑定到其他对象,如int或list,但不会引入新的名称空间。

get_namespaces()

返回绑定到这个名字的名字空间列表。

get_namespace()

返回绑定到这个名字的名字空间。如果绑定了多个名称空间,则会引发ValueError