When debugging, we often see print statements like these:
print x # easy to type, but no context print 'x=',x # more context, harder to type 12 x= 12
How can write a function that will take a variable or name of a variable and print its name and value? I’m interested exclusively in debugging output, this won’t be incorporated into production code.
debugPrint(x)    #  or
debugPrint('x')
x=12
Advertisement
Answer
You can just use eval:
def debug(variable):
    print variable, '=', repr(eval(variable))
Or more generally (which actually works in the context of the calling function and doesn’t break on debug('variable'), but only on CPython):
from __future__ import print_function
import sys
def debug(expression):
    frame = sys._getframe(1)
    print(expression, '=', repr(eval(expression, frame.f_globals, frame.f_locals)))
And you can do:
>>> x = 1
>>> debug('x + 1')
x + 1 = 2
