Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get all the local variables defined inside the function in python?

Is there any way to print all the local variables without printing them expilictly ?

def some_function(a,b):
    name='mike'
    city='new york'

    #here print all the local variables inside this function?
like image 911
Ravi Avatar asked Apr 16 '26 03:04

Ravi


2 Answers

That would be the locals() built-in function

Python 3.9.0 (tags/v3.9.0:9cf6752, Oct  5 2020, 15:34:40) [MSC v.1927 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> locals()
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>}
>>> x = 5
>>> locals()
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, 'x': 5}

You can filter out the builtins with a list comprehension:

>>> [_ for _ in locals() if not (_.startswith('__') and _.endswith('__'))]
['x']
like image 160
joedeandev Avatar answered Apr 18 '26 17:04

joedeandev


If you just want variable names you can use dir() as well:

def some_function(a, b):
    name='Mike'
    city='New York'

    # print all the local variables inside this function?
    print(dir())
some_function('a', 'b')
like image 27
yosemite_k Avatar answered Apr 18 '26 18:04

yosemite_k