Printing literal text of an argument
Gregory Bond
gnb at itga.com.au
Thu Aug 11 21:55:29 EDT 2005
Rex Eastbourne wrote:
> def debug(aname, avalue):
> print aname, 'is':
> pprint.pprint(avalue)
>
use eval:
def debug(s):
print s, 'is'
pprint.pprint(eval(s))
(it does mean the arg is a string not code......)
> On a
> slightly different topic, is it also possible to make the macro print
> the line number where the function was first called?
You can raise and catch an exception then walk up the call stack:
import sys
def debug(s):
print s, 'is'
pprint.pprint(eval(s))
try:
raise ""
except:
tb = sys.exc_info()[2]
# Find the calling frame
frame = tb.tb_frame.f_back
print "Called from line", frame.f_lineno
See the language reference manual sec 3.2 "Standard Type Hierarchy".
More information about the Python-list
mailing list