ast.If(test, body, orelse)
is a class defined in the ast
module that expresses an if
statement in Python in the form of an parse()
method of ast
is called on a Python source code that contains if
statements, the ast.If
class is invoked, which expresses the if
statement to a node in an ast
tree data structure. The ast.If
class represents the If node type in the ast
tree. In the class parameter, test
contains the condition of the if statement as a single node of type Compare
. body
is a list of nodes representing the statements inside the if
block. orelse
contains a list of nodes representing the additional elif
and else
conditions associated with the if
block.
NOTE: The
elif
operator does not have a special representation in theast
module.elif
statements are parsed as extraIf
nodes.
import astfrom pprint import pprintclass IfVisitor(ast.NodeVisitor):def visit_If(self, node):print('Node type: If\nFields:', node._fields)ast.NodeVisitor.generic_visit(self, node)def visit_Compare(self, node):print('Node type: Compare\nFields:', node._fields)ast.NodeVisitor.generic_visit(self, node)def visit_Name(self, node):print('Node type: Name\nFields:', node._fields)ast.NodeVisitor.generic_visit(self, node)def visit_Constant(self, node):print('Node type: Constant\nFields:', node._fields)ast.NodeVisitor.generic_visit(self, node)def visit_Pass(self, node):print('Node type: Pass\nFields:', node._fields)ast.NodeVisitor.generic_visit(self, node)visitor = IfVisitor()tree = ast.parse("""if x < 20:passelif y > 40:passelse:pass""")pprint(ast.dump(tree))visitor.visit(tree)
IfVisitor
class that extends from the parent class ast.NodeVisitor
. We override the predefined visit_If
, visit_Compare
, visit_Constant
, visit_Name
, and visit_Pass
methods in the parent class, which receive the If
,Compare
, Constant
, Name
, and Pass
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 IfVisitor
.if
, elif
, and else
block. We pass the code to the ast.parse()
method, which returns the result of the expression after evaluation, and store the result in tree
.ast.dump()
method returns a formatted string of the tree structure in tree
.visit
method available to the visitor
object visits all the nodes in the tree structure.Free Resources