Open In App

Viewing all defined variables in Python

Last Updated : 11 Dec, 2020
Improve
Improve
Like Article
Like
Save
Share
Report

In this article, we are going to discuss how to view all defined variables in Python. Viewing all defined variables plays a major role while debugging the code.

Method 1: Using dir() function

dir() is a built-in function to store all the variables inside a program along with the built-in variable functions and methods. It creates a list of all declared and built-in variables. There are two different ways to view all defined variables using dir( ). They are discussed below.

When no user-defined variable starts with ‘__’ :

  • Define some variables of various types that are not starting with ‘__’
  • Call dir and store it in a variable. It stores all the variable names defined before in the form of a list and stores the variable names as a string.
  • Iterate over the whole list where dir( ) is stored.
  • Print the item if it doesn’t start with ‘__’

Example:

Python3




# Define some variables of various types
# that are not starting with '__'
var2 = "Welcome to geeksforgeeks"
var3 = {"1": "a", "2": "b"}
var4 = 25
var5 = [1, 2, 3, 4, 5]
var6 = (58, 59)
  
# call dir and store it in a variable.
# It stores all the variable names defined
# before in the form of a list
# and stores the variable names as a string.
all_variables = dir()
  
# Iterate over the whole list where dir( )
# is stored.
for name in all_variables:
    
    # Print the item if it doesn't start with '__'
    if not name.startswith('__'):
        myvalue = eval(name)
        print(name, "is", type(myvalue), "and is equal to ", myvalue)


Output:

var2 is <class ‘str’> and is equal to  Welcome to geeksforgeeks

var3 is <class ‘dict’> and is equal to  {‘1’: ‘a’, ‘2’: ‘b’}

var4 is <class ‘int’> and is equal to  25

var5 is <class ‘list’> and is equal to  [1, 2, 3, 4, 5]

var6 is <class ‘tuple’> and is equal to  (58, 59)

Storing the built-in variables and ignoring them

  • Create a new variable and store all built-in functions within it using dir( ).
  • Define some variables of various types.
  • Again call dir and store it in a list subtracting the built-in variables stored previously.
  • Iterate over the whole list.
  • Print the desired items

Example:

Python3




# Create a new variable and store all
# built-in functions within it using dir( ).
not_my_data = set(dir())
  
# Define some variables of various types.
var2 = "Welcome to geeksforgeeks"
var3 = {"1": "a", "2": "b"}
var4 = 25
var5 = [1, 2, 3, 4, 5]
var6 = (58, 59)
  
# Again call dir and store it in a list 
# subtracting the built-in variables stored
# previously.
my_data = set(dir()) - not_my_data
  
# Iterate over the whole list is stored.
for name in my_data:
    
    # Exclude the un-necessary variable named not_my_data
    if name != "not_my_data":
        val = eval(name)
        print(name, "is", type(val), "and is equal to ", val)


Output:

var2 is <class ‘str’> and is equal to  Welcome to geeksforgeeks

var3 is <class ‘dict’> and is equal to  {‘1’: ‘a’, ‘2’: ‘b’}

var6 is <class ‘tuple’> and is equal to  (58, 59)

var4 is <class ‘int’> and is equal to  25

var5 is <class ‘list’> and is equal to  [1, 2, 3, 4, 5]

Method 2: To print local and global variables 

Locals() is a built-in function that returns a list of all local variables in that particular scope. And globals() does the same with the global variables.

Approach 

  • Create a list of all global variables using globals( ) function, to store the built-in global variables.
  • Declare some global variables
  • Declare a function.
  • Declare some local variables inside it.
  • Store all the local variables in a list, using locals keyword.
  • Iterate over the list and print the local variables.
  • Store the global variables in a list using globals keyword and subtract the previously created list of built-in global variables from it.
  • Print them.
  • Call the function.

Example:

Python3




# Create a list of all global variables using
# globals( ) function, To store the built-in
# global variables.
not_my_data = set(globals())
  
# Declare some global variables
foo5 = "hii"
foo6 = 7
  
# Declare a function.
def func():
    
    # Declare some local variables inside it.
    var2 = "Welcome to geeksforgeeks"
    var3 = {"1": "a", "2": "b"}
    var4 = 25
    var5 = [1, 2, 3, 4, 5]
    var6 = (58, 59)
  
    # Store all the local variables in a list,
    # using locals keyword.
    locals_stored = set(locals())
      
    # Iterate over the list and print the local
    # variables.
    print("Printing Local Variables")
    for name in locals_stored:
        val = eval(name)
        print(name, "is", type(val), "and is equal to ", val)
  
    # Store the global variables in a list using 
    # globals keyword and subtract the previously
    # created list of built-in global variables from it.
    globals_stored = set(globals())-not_my_data
      
    # Print the global variables
    print("\nPrinting Global Variables")
    for name in globals_stored:
        
        # Excluding func and not_my_data as they are 
        # also considered as a global variable
        if name != "not_my_data" and name != "func":
            val = eval(name)
            print(name, "is", type(val), "and is equal to ", val)
  
  
# Call the function.
func()


Output:

Printing Local Variables

var2 is <class ‘str’> and is equal to  Welcome to geeksforgeeks

var6 is <class ‘tuple’> and is equal to  (58, 59)

var4 is <class ‘int’> and is equal to  25

var5 is <class ‘list’> and is equal to  [1, 2, 3, 4, 5]

var3 is <class ‘dict’> and is equal to  {‘1’: ‘a’, ‘2’: ‘b’}

Printing Global Variables

foo6 is <class ‘int’> and is equal to  7

foo5 is <class ‘str’> and is equal to  hii



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads