Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get locals from calling namespace in Python

I want to retrieve the local variables from Python from a called function. Is there any way to do this? I realize this isn't right for most programming, but I am basically building a debugger. For example:

def show_locals():   # put something in here that shows local_1.  local_1 = 123 show_locals()  # I want this to show local_1. 

What do I put in the body of show_locals? If I have to modify the calling statement, what is the minimal modification I can make?

Note: this must work when show_locals is in a different module to its caller.

like image 390
Peter Avatar asked Jul 08 '11 00:07

Peter


Video Answer


1 Answers

If you're writing a debugger, you'll want to make heavy use of the inspect module:

def show_callers_locals():     """Print the local variables in the caller's frame."""     import inspect     frame = inspect.currentframe()     try:         print(frame.f_back.f_locals)     finally:         del frame 
like image 92
Gareth Rees Avatar answered Sep 20 '22 05:09

Gareth Rees