symtable访问编译器符号表

源代码: Lib / symtable.py


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

生成符号

symtable.symtablecode, filename, compile_type
返回顶部SymbolTable对于Python源code.filename是包含代码的文件的名称。compile_typemode compile().

参数检查符号

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。这些可以用get_children().
has_exec
获得True如果块使用exec.
get_identifiers
返回此表中的符号名称列表.
lookupname)
在表中找到name并返回Symbol instance.
get_symbols()
返回Symbol列表中的名称.
get_children
返回嵌套符号表的列表.
class symtable.Function
函数或方法的命名空间。该类继承SymbolTable.

get_parameters
将包含参数名称的元组返回给该函数.
get_locals ( )
在这个函数中返回一个包含locals名字的元组.
get_globals ()
在这个函数中返回一个包含全局变量名的元组.
get_frees
在此函数中返回包含自由变量名称的元组.
class symtable.Class
类的命名空间。这个类继承了SymbolTable.

get_methods
返回一个包含类中声明的方法名称的元组.
class symtable.Symbol
一个条目SymbolTable对应于源中的标识符。构造函数不公开

get_name
返回符号的名称.
is_referenced
返回True如果符号用在它的块中
is_imported
返回True如果符号是从import语句创建的.
is_parameter
如果符号是参数,则返回True.
is_global()
如果符号是全局的,请返回True
is_declared_global
如果符号被全局声明声明为全局,则返回True.
is_local(
返回True如果符号是其块的本地符号
is_free
返回True如果符号在其块中引用,但未分配给
is_assigned
返回True如果符号被分配到它的块中
is_namespace ()
返回True如果名称绑定引入了新的命名空间

如果名称用作函数或类语句的目标,那么这将是真的.

例如:

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

注意一个单个名称可以绑定到多个对象。如果结果是True,那么名称也可以绑定到其他对象,比如int orlist,不会引入新的命名空间.

get_namespaces (
返回绑定到此名称的命名空间列表.
get_namespace ()
返回绑定到此名称的命名空间。如果有多个命名空间被绑定,则ValueError被提升.

评论被关闭。