Python Glossary English

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

ast.BinOp

выражения

Узел бинарной операции: левый операнд, оператор и правый операнд — a + b, a * b, a | b и другие арифметические и побитовые операции.

Синтаксис

ast.BinOp(left, op, right)

Приоритет и скобки в дереве не хранятся — они превращаются в форму дерева: 1 + 2 * 3 даёт BinOp, у которого right — ещё один BinOp с Mult. Сравнения (a < b) — это Compare, а and и or — BoolOp, хотя на вид они тоже «бинарные». Оператор лежит в op экземпляром класса (Add(), Mult()), поэтому проверяют isinstance(node.op, ast.Add), а не сравнение со строкой '+'.

Примеры

import ast
node = ast.parse('1 + 2 * 3', mode='eval').body
print(type(node.op).__name__, type(node.right).__name__)  # → Add BinOp
print(type(node.right.op).__name__)  # → Mult
import ast
node = ast.parse('(1 + 2) * 3', mode='eval').body
print(type(node.op).__name__, type(node.left).__name__)  # → Mult BinOp
print(ast.unparse(node))  # → (1 + 2) * 3

См. также

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