Python Glossary English

все Python 3до 3.14Удалено из стандартной библиотекипонятие

ast.Num / ast.Str / ast.Bytes / ast.NameConstant / ast.Ellipsis

удалено

Старые классы узлов ast для чисел, строк, байтов, None/True/False и многоточия. Удалены в Python 3.14 — используйте ast.Constant.

Синтаксис

isinstance(node, ast.Num)  # до 3.14

До Python 3.8 разбор кода давал для каждого вида литерала свой узел: Num с полем n, Str и Bytes с полем s, NameConstant и Ellipsis. С 3.8 парсер создаёт один узел ast.Constant, а старые имена жили как совместимые обёртки — их и убрали вместе с полями n и s. Как переписать: isinstance(node, ast.Num) меняется на isinstance(node, ast.Constant) и проверку типа значения, например isinstance(node.value, int); node.n и node.s — на node.value; методы visit_Num и visit_Str в NodeVisitor — на один visit_Constant; ast.Num(n=1) при построении дерева — на ast.Constant(value=1).

Примеры

# Python 3.14+
import ast
try:
    ast.Num
except AttributeError as e:
    print(type(e).__name__)  # → AttributeError
# Python 3.14+
import ast
class Literals(ast.NodeVisitor):
    def visit_Constant(self, node):
        print(type(node.value).__name__, repr(node.value))
Literals().visit(ast.parse("x = 42 + len('hi')"))
# → int 42
# → str 'hi'
import ast
node = ast.parse('42').body[0].value
print(isinstance(node, ast.Num), node.n)  # → True 42
print(type(node).__name__)  # → Constant

Частые ошибки

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