[Python-ideas] Standard way to get caller name and easy call stack access
Mark Shannon
mark at hotpy.org
Thu Mar 22 10:24:40 CET 2012
anatoly techtonik wrote:
> On Thu, Mar 22, 2012 at 3:17 AM, Sven Marnach <sven at marnach.net> wrote:
>> anatoly techtonik schrieb am Do, 22. Mär 2012, um 00:03:47 +0300:
>>> Seems like the only way to get caller name in Python is to use inspect
>>> module [1]
>>> It seems that this way is not recommended (I wonder why?) and there is no other.
>> Using introspection in production code is not recommended in general,
>> with some exceptions, since the main purpose of introspection is
>> debugging. *If* you want to do this at all, the recommended way is to
>> use the inspect module. (And there is another way -- at least in
>> CPython you can use 'sys._getframe().f_back.f_code.co_name'.)
>
> If sys._getframe() is not available in Jython, IronPython and PyPy
> then I won't use that for debug mode output in libraries.
sys._getframe() is available in PyPy and Jython, I'm not sure if
IronPython supports it, I think it does.
A simpler and more concrete suggestion might be to simply rename
sys._getframe() as sys.getframe(), since all the main implementations
support it anyway.
Cheers,
Mark.
More information about the Python-ideas
mailing list