ast.While
is a class defined in the ast
module that expresses the while
loop in Python in the form of an Abstract Syntax Tree.
When the parse()
method of ast
is called on a Python source code that contains a while
loop, the ast.While
class is invoked, which expresses the try
statement to a node in an ast
tree data structure. The ast.While
class represents the While node type in the ast
tree.
test
: Contains the condition of the loop, such as a Compare
node.body
: List of nodes in the body of a while
loop.orelse
: List of nodes in the body of else
nodes.import ast from pprint import pprint class WhileVisitor(ast.NodeVisitor): def visit_While(self, node): print('Node type: While\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_Pass(self, node): print('Node type: Pass\nFields:', node._fields) ast.NodeVisitor.generic_visit(self, node) visitor = WhileVisitor() tree = ast.parse(""" while (a < 10): pass else: ... """) pprint(ast.dump(tree)) visitor.visit(tree)
WhileVisitor
class that extends from the parent class ast.NodeVisitor
. We override the predefined visit_While
, visit_Compare
, visit_Name
, and visit_Pass
methods in the parent class, which receive the While
, Compare
, Name
, and Pass
nodes, respectively.generic_visit()
method, which invokes the propagation of visit
on the children nodes of the input node.WhileVisitor
.try
and except
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 a tree.visit
method available to the visitor object visits all the nodes in the tree structure.RELATED TAGS
CONTRIBUTOR
View all Courses