What is the ast.parse() method in Python?
Overview
In Python, the ast.parse() function splits the source code into tokens based on the grammar. These tokens are then transformed to build an Abstract Syntax Tree (AST). It is a tree representation of a source code. In other words, the ast.parse() method allows the conversion of the source code into a collection of AST nodes linked together as a tree.
Syntax
ast.parse(source, filename='<unknown>', mode='exec', *, type_comments=False, feature_version=None)
Parameters
source: The source code in a string, which is to be converted into an AST.filename: The file from which the code is read.mode: The mode in which the code is compiled. It is anexec, which takes a code block that has statements, class, functions, and so on. It can also be anexecthat only accepts a single expression.type_comments: The default value isFalse. IfTrueis returned, the parser is modified to check. It returns type comments specified by PEP 484 , and PEP 526.feature_version: The default value isNone. If it is set to a tuple, say(3,4), it attempts to parse using the Python 3.4 version’s grammar.
Return type
The ast.parse() method converts the source code to return a collection of AST nodes.
Code
import astfrom pprint import pprinttree = ast.parse("""def add(a, b):return a + b""")pprint(ast.dump(tree))
Explanation
- Line 5: We write a function
add(a,b)that returns the sum of the input numbers. - Line 4: The
addfunction is passed as a string to theast.parse()method. It transforms the source code into a collection of AST nodes.
The output has several AST nodes, such as:
FunctionDef:Function definition.BinOp:Binary operation.
We can also observe arguments inside these nodes. For instance, the value of the Op argument as Add() in the BinOp node.