все 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Сообщить о неточности