Python Glossary English

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

ast.unaryop

операторы

Абстрактный базовый класс унарных операторов: Not (not), USub (-x), UAdd (+x) и Invert (~x). Экземпляр — поле op узла UnaryOp.

Синтаксис

isinstance(node.op, ast.unaryop)

Отрицательное число в коде — не константа: -5 разбирается как UnaryOp(USub, Constant(5)), поэтому поиск Constant с value < 0 ничего не найдёт. ast.literal_eval это понимает и вернёт -5. Логическое not — тоже unaryop, а не boolop.

Примеры

import ast
e = ast.parse('-5', mode='eval').body
print(type(e).__name__, type(e.op).__name__, e.operand.value)  # → UnaryOp USub 5
print(ast.literal_eval('-5'))  # → -5
print(type(ast.parse('not x', mode='eval').body.op).__name__)  # → Not

См. также

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