Python Glossary English

все Python 3устарело в 3.9astпонятие

ast.Index

выражения

Устаревший с 3.9 узел индекса в Subscript: теперь индекс хранится прямо выражением, а ast.Index(value=x) возвращает сам x.

Синтаксис

ast.Index(value)  # возвращает value

С Python 3.9 в d[1] поле slice содержит сразу Constant, а d[1:2, 3] — Tuple со Slice внутри; обёрток Index и ExtSlice парсер больше не создаёт. Класс оставлен для старого кода: вызов ast.Index(value=node) отдаёт тот же node, так что isinstance(x, ast.Index) у разобранного дерева всегда ложно. Код, который «снимал» .value с Index, на 3.9+ надо переписать на чтение slice напрямую.

Примеры

import ast
sub = ast.parse('d[1]', mode='eval').body
print(type(sub).__name__, type(sub.slice).__name__)  # → Subscript Constant
node = ast.Constant(5)
print(ast.Index(value=node) is node)  # → True

См. также

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