[Python-ideas] Standard way to get caller name and easy call stack access

Steven D'Aprano steve at pearwood.info
Tue Mar 27 15:33:51 CEST 2012


anatoly techtonik wrote:
[...]
> Well, I proposed to have a caller_name() method. If it is not too
> universal, then a sys.call_stack() could be a better try:
> 
>   sys.call_stack() - Get current call stack. Return the list with a
>                             list of qualified names starting with the oldest.
> 
> Rationale: make logging calls and module based filters zero cost.

I don't have an opinion on whether this is a good idea or a bad idea, but if 
people are going to make radical changes with respect to inspecting the call 
stack, I think it would be much better to get a list of the actual calling 
functions, not their names.

Reasons:

* If you have the function, you can do anything with it, including getting the 
name, the docstring, any annotations it may have, etc., but if all you have is 
the name, it isn't so easy, and may not actually be possible to unambiguously 
find the function object given only it's name.

* Not all functions have meaningful names (think lambdas); or their name may 
be ambiguous (think functions produced by factory functions).



-- 
Steven



More information about the Python-ideas mailing list