tags:

views:

49

answers:

4

Is there a way to have Python print the names and values of all bound variables?

(without redesigning the program to store them all in a single list)

+1  A: 

globals() and locals() should give you what you're looking for.

vanza
A: 
dir(...)
    dir([object]) -> list of strings

    If called without an argument, return the names in the current scope.
    Else, return an alphabetized list of names comprising (some of) the attributes
    of the given object, and of attributes reachable from it.
    If the object supplies a method named __dir__, it will be used; otherwise
    the default dir() logic is used and returns:
      for a module object: the module's attributes.
      for a class object:  its attributes, and recursively the attributes
        of its bases.
      for any other object: its attributes, its class's attributes, and
        recursively the attributes of its class's base classes.
Eli Bendersky
A: 

globals() and locals() each return a dictionary representing the symbol table in global and local scopes respectively.

IvanGoneKrazy
A: 

Yes you can, it is a rather dirty way to do it, but it is good for debugging etc

from pprint import pprint

def getCurrentVariableState():
    pprint(locals())
    pprint(globals())
Zimm3r
this is not even close to all the bound variables
aaronasterling