Python Glossary English

все Python 3astпонятие

ast.Name

переменные

Узел имени переменной: поле id — строка с именем, ctx — Load, Store или Del в зависимости от того, читают имя, присваивают или удаляют.

Синтаксис

ast.Name(id, ctx=ast.Load())

Не всякое слово в коде — Name: True, False и None с Python 3.8 разбираются в Constant, а в a.b узлом Name будет только a — b хранится строкой в поле attr узла Attribute. Поиск «где используется x» по Name без проверки ctx смешивает чтение и присваивание; нужен isinstance(node.ctx, ast.Load). Имена параметров функции — это узлы arg, а не Name.

Примеры

import ast
n = ast.parse('x = y').body[0]
print(n.targets[0].id, type(n.targets[0].ctx).__name__)  # → x Store
print(n.value.id, type(n.value.ctx).__name__)  # → y Load
import ast
print(type(ast.parse('True', mode='eval').body).__name__)  # → Constant
a = ast.parse('obj.size', mode='eval').body
print(type(a.value).__name__, a.value.id, a.attr)  # → Name obj size

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности