Trusted answers to developer questions
Trusted Answers to Developer Questions

Related Tags

python

What is ast.Invert in Python?

Abdul Monum
Abstract Syntax Tree

ast.Invert is a class defined in the ast module that extends the ast.UnaryOp class and is used to express the ~ (invert) operator in Python in the form of an Abstract Syntax Treetree representation of source code. When the parse() method of ast is called on a Python source code that contains a unary operator such as the invert operator, the ast.Invert class is invoked to convert the invert operation to an ast tree data structure.

NOTE: ~ is the bitwise NOT operator that inverts all the bits.

Example

import ast
from pprint import pprint

class UnaryOpVisitor(ast.NodeVisitor):

    def visit_UnaryOp(self, node):
        print('Node type: UnaryOp\nFields: ', node._fields)
        self.generic_visit(node)

    def visit_Constant(self,node):
        print('Node type: Constant\nFields: ', node._fields)
        ast.NodeVisitor.generic_visit(self, node)


visitor = UnaryOpVisitor()
tree = ast.parse('~4000', mode='eval')
pprint(ast.dump(tree))
visitor.visit(tree)

Explanation

  • We define a UnaryOpVisitor class that extends from the parent class ast.NodeVisitor. We override the predefined visit_UnaryOp and visit_Constant methods in the parent class, which receive the UnaryOp and Constant 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 the visit on the children nodes of the input node.
  • We initialize a visitor object of the class UnaryOpVisitor.
  • We define a Python expression ~4000 and send it to the ast.parse() method with mode='eval', which returns the result of the expression after evaluation and store it in tree.
  • The ast.dump() method returns a formatted string of the tree structure in tree.
  • The visit method available to the visitor objects visits all the nodes in the tree structure.

RELATED TAGS

python

CONTRIBUTOR

Abdul Monum
Copyright ©2022 Educative, Inc. All rights reserved
RELATED COURSES

View all Courses

Keep Exploring