все Python 3astпонятие
ast.Del
переменные
Контекст удаления: стоит в поле ctx у Name, Attribute и Subscript, которые являются целями инструкции del. Соседи — Load (чтение) и Store (запись).
Синтаксис
ast.Name(id, ctx=ast.Del())
Del — это не сама инструкция del, а метка у её целей; инструкцию представляет ast.Delete. В del a[0] контекст Del получает только Subscript, а выражение a внутри него читается и остаётся с Load. При ручной сборке дерева для compile() контекст обязан совпадать с ролью узла, иначе компилятор откажет с ValueError.
Примеры
import ast
target = ast.parse('del a[0]').body[0].targets[0]
print(type(target).__name__, type(target.ctx).__name__) # → Subscript Del
print(type(target.value.ctx).__name__) # → Load
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности