Can a function access its own name?
Peter Hansen
peter at engcorp.com
Sat Nov 19 13:19:59 EST 2005
bobueland at yahoo.com wrote:
[edited slightly]
> def cap():
> print "the name of this function is " + "???"
> cap ()
sys._getframe() would help you here:
>>> import sys
>>> sys._getframe()
<frame object at 0x00B496D0>
>>> def f():
... global x
... x = sys._getframe()
...
>>> f()
>>> x
<frame object at 0x00B15250>
>>> dir(x)
[..., 'f_builtins', 'f_code', 'f_exc_traceback', 'f_exc_type', ...]
>>> dir(x.f_code)
[...'co_name', 'co_names', 'co_nlocals', 'co_stacksize', 'co_varnames']
>>> x.f_code.co_name
'f'
So your function could be:
>>> import sys
>>> def cap():
... print 'function name is', sys._getframe().f_code.co_name
...
>>> cap()
function name is cap
-Peter
More information about the Python-list
mailing list