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".
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to