Python Glossary English

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

ast.Sub

операторы

Оператор вычитания - в поле op узлов BinOp и AugAssign.

Синтаксис

ast.Sub()

Sub — только бинарный минус: -x разбирается в UnaryOp(USub). Вычитание левоассоциативно, поэтому a - b - c — BinOp, у которого вложенный BinOp слева, а справа одно c. Парсер переиспользует один объект Sub для всех вхождений, поэтому сравнивайте isinstance(node.op, ast.Sub), а не node.op == ast.Sub().

Примеры

import ast
n = ast.parse('a - b - c', mode='eval').body
print(type(n.op).__name__, type(n.left).__name__, n.right.id)  # → Sub BinOp c
print(type(ast.parse('-x', mode='eval').body.op).__name__)  # → USub
import ast
a = ast.parse('x - y', mode='eval').body.op
b = ast.parse('p - q', mode='eval').body.op
print(a is b, a == ast.Sub(), isinstance(a, ast.Sub))  # → True False True

См. также

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