Python Glossary English

Python 3.6+astпонятие

ast.Constant

литералы

Узел литерала: число, строка, байты, True, False, None или многоточие. С Python 3.8 парсер выдаёт его для всех констант вместо Num, Str и других.

Синтаксис

ast.Constant(value, kind=None)

Значение лежит в поле value, а тип различают проверкой isinstance(node.value, int) и т. п. — учтите, что True тоже проходит как int. Отрицательное число — не константа: -1 разбирается в UnaryOp(USub, Constant(1)), и поиск отрицательных литералов по Constant их пропустит. Поле kind равно 'u' только для строки с префиксом u'...', иначе None. Старые узлы Num и Str с полями n и s удалены в 3.14.

Примеры

import ast
for src in ['42', "'hi'", 'None', '...']:
    node = ast.parse(src, mode='eval').body
    print(type(node).__name__, repr(node.value))
# → Constant 42 / Constant 'hi' / Constant None / Constant Ellipsis
import ast
node = ast.parse('-1', mode='eval').body
print(type(node).__name__, node.operand.value)  # → UnaryOp 1

См. также

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