function call

Bruno Desthuilliers bdesth.quelquechose at
Mon Sep 3 17:10:54 CEST 2007

Bruno Desthuilliers a écrit :
> ianaré a écrit :
>> Hey all,
>> Is there a way of printing out how a function was called? In other
>> words if I do the following:
>> def someFunction(self):
>>     self.someOtherFunction(var1, var2)
>> I would get something like "someOtherFunction: called by:
>> someFunction, args are: var1, var2"
>> Thanks in advance
> You may be able to solve this using a decorator (to avoid polluting your 
> code with this) and the infamous sys._getframe() hack.

Not even with sys._getframe in fact - or at least not directly !-)

import inspect

def trace(func):
     def traced(*args, **kw):
         f = inspect.currentframe(1)
         caller = inspect.getframeinfo(f)[2]
         print "%s : called by %s with %s %s" \
               % (caller, func.__name__, str(args), kw)
         return func(*args, **kw)
     return traced

def test(toto, tata=None):
     return 42

def call(toto):
     return test(toto, 24)



More information about the Python-list mailing list