Python Glossary English

все Python 3astпонятие

ast.USub

операторы

Оператор унарного минуса -x в поле op узла UnaryOp.

Синтаксис

ast.USub()

Из-за USub отрицательных литералов в дереве нет: -1 — это UnaryOp(USub, Constant(1)), и проверка isinstance(node, ast.Constant) для -1 ложна. Приоритет у унарного минуса ниже, чем у **: -2 ** 2 равно -4. Сохраняет ли знак ast.unparse — да, но ищущий «отрицательные числа» должен смотреть на пару UnaryOp+USub+Constant.

Примеры

import ast
n = ast.parse('-1', mode='eval').body
print(type(n).__name__, type(n.op).__name__, isinstance(n, ast.Constant))  # → UnaryOp USub False
print(ast.unparse(n))  # → -1

См. также

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