все Python 3устарело в 3.9astпонятие
ast.ExtSlice
выражения
Deprecated-узел расширенного среза a[1:2, 3] из Python 3.8 и раньше. С 3.9 такой индекс — ast.Tuple в поле slice узла Subscript.
Синтаксис
ast.ExtSlice(dims) # устарел: возвращает ast.Tuple(dims, ast.Load())
Класс оставлен для совместимости, но парсер его больше не создаёт, а вызов ast.ExtSlice(dims) возвращает ast.Tuple(dims, Load()) — isinstance(node, ast.ExtSlice) на разобранном коде всегда False. Код анализаторов, написанный под 3.8, проверявший ExtSlice и Index, на 3.9+ молча пропускает индексы: теперь их смотрят через node.slice, где лежит Tuple, Slice или само выражение индекса. Удаление обещано «в будущих версиях», без номера.
Примеры
import ast
node = ast.parse('a[1:2, 3]', mode='eval').body
print(type(node).__name__, type(node.slice).__name__) # → Subscript Tuple
print([type(x).__name__ for x in node.slice.elts]) # → ['Slice', 'Constant']
import ast
made = ast.ExtSlice([ast.Name('i')])
print(type(made).__name__, type(made.ctx).__name__) # → Tuple Load
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности