ast.BinOp(left, op, right)
is a class defined in the ast
module that is used to express binary operations in Python in the form of an
When the parse()
method of ast
is called on a Python source code that contains binary operators such as addition or division, the ast.BinOp(left, op, right)
class is invoked to convert the binary operation to an ast
tree data structure.
The op
parameter in the class definition refers to the binary operators such as +
or -
in the expression, and left
and right
refer to the values involved in the respective sides of the operator. op
can contain the following binary operators:
Add
Sub
Mult
MatMult
Div
Mod
Pow
LShift
RShift
BitOr
BitXor
BitAnd
FloorDiv
import astfrom pprint import pprintclass BinOpVisitor(ast.NodeVisitor):def visit_BinOp(self, node):print('Node type: BinOp\nFields: ', node._fields)self.generic_visit(node)def visit_Name(self,node):print('Node type: Name\nFields: ', node._fields)ast.NodeVisitor.generic_visit(self, node)visitor = BinOpVisitor()tree = ast.parse('a / b', mode='eval')pprint(ast.dump(tree))visitor.visit(tree)
BinOpVisitor
class that extends from the parent class ast.NodeVisitor
. We override the predefined visit_BinOp
and visit_Name
methods in the parent class, which receive the BinOp
and Name
nodes, respectively. In the method, we print the type and the fields inside the node and call the generic_visit()
method, which invokes the propagation of visit on the children nodes of the input node.visitor
object of the class BinOpVisitor
.a and b
and send it to the ast.parse()
method with mode='eval'
, which returns the result of the expression after evaluation and stores it in tree
.ast.dump()
method returns a formatted string of the tree structure in tree
.visit
method available to the visitor
objects visits all the nodes in the tree structure.