Gabriel Genellina wrote:
> En Tue, 12 Feb 2008 14:41:20 -0200, Jeff Schwab <[EMAIL PROTECTED]>
> escribi�:
>
>> def line():
>> try:
>> raise Exception
>> except:
>> return sys.exc_info()[2].tb_frame.f_back.f_lineno
>> def file():
>> return inspect.currentframe().f_code.co_filename
>
> It's not a good idea to shadow the file type; I'd suggest current_file
> and current_line.
>
> file() should return inspect.currentframe().f_back.f_code.co_filename,
> else you're using the filename for file() itself, not the caller's
Both excellent points.
> And why the assymetry? Using try/except might help Jython, but that
> should be an implementation detail of inspect.currentframe() anyway.
> line() should just return inspect.currentframe().f_back.f_lineno
I suspect that Alain was just showing two ways to accomplish the same
end, since he was giving a purely didactic example. I dumbly copied his
code.
What about the following? Should the underscores be omitted from the
method names, for consistency with inspect?
# srcinfo.py
import inspect
import sys
def currentline():
return inspect.currentframe().f_back.f_lineno
def currentfile():
return inspect.currentframe().f_back.f_code.co_filename
# client.py
import srcinfo
import sys
debug = '-d' in sys.argv
# ...
if debug:
print('reached %s:%d' %
(srcinfo.currentfile(), srcinfo.currentline()))
--
http://mail.python.org/mailman/listinfo/python-list