Содержание страницы
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()¶
- Возвращает список имён символов в этой таблице.
- 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.