Python Glossary English

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

ast.UnaryOp

выражения

Узел унарной операции: op — UAdd, USub, Not или Invert, operand — выражение, к которому она применена.

Синтаксис

ast.UnaryOp(op, operand)

Отрицательное число в исходнике — не Constant: -5 разбирается в UnaryOp(USub, Constant(5)), и анализ, ищущий числа через Constant, теряет знак. ast.literal_eval при этом -5 принимает. Приоритет тоже ловушка: -2 ** 2 — UnaryOp, чей operand — BinOp 2 ** 2, то есть результат -4. Логическое not — тоже UnaryOp, а and/or — уже BoolOp.

Примеры

import ast
n = ast.parse('-5', mode='eval').body
print(type(n).__name__, type(n.op).__name__, n.operand.value)  # → UnaryOp USub 5
print(ast.literal_eval('-5'))  # → -5
import ast
n = ast.parse('-2 ** 2', mode='eval').body
print(type(n).__name__, type(n.operand).__name__, -2 ** 2)  # → UnaryOp BinOp -4

См. также

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