Python Glossary English

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