Документация Python неофициальный перевод
Содержание страницы

symtable – Доступ к таблицам символов компилятораsymtable – Access to the compiler’s symbol tables

Таблицы символов генерируются компилятором из AST непосредственно перед генерацией байт-кода. Таблица символов отвечает за вычисление области видимости каждого идентификатора в коде. symtable предоставляет интерфейс для изучения этих таблиц.

Генерация таблиц символовGenerating Symbol Tables

symtable.symtable(code, filename, compile_type)
Возвращает корневой объект SymbolTable для исходного кода Python code. filename – это имя файла, содержащего код. compile_type аналогичен аргументу mode функции compile().

Изучение таблиц символовExamining Symbol Tables

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.
has_import_start()
Возвращает True, если блок использует импорт со звёздочкой (from-import *).
get_identifiers()
Возвращает список имён символов в этой таблице.
lookup(name)
Выполняет поиск 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, если символ создан из инструкции import.
is_parameter()
Возвращает True, если символ является параметром.
is_global()
Возвращает True, если символ глобальный.
is_local()
Возвращает True, если символ является локальным для своего блока.
is_free()
Возвращает True, если символ упоминается в своём блоке, но не присваивается значение.
is_assigned()
Возвращает True, если символу присваивается значение в его блоке.
is_namespace()

Возвращает True, если связывание имени создаёт новое пространство имён.

Если имя используется как цель в инструкции функции или класса, это будет истинно.

Обратите внимание, что одно имя может быть связано с несколькими объектами. Если результат равен True, имя также может быть связано с другими объектами, такими как int или list, которые не создают новое пространство имён.

get_namespaces()
Возвращает список пространств имён, связанных с этим именем.
get_namespace()
Возвращает пространство имён, связанное с этим именем. Если привязано более одного пространства имён, возбуждается ValueError.