In Python, without using the traceback
module, is there a way to determine a function’s name from within that function?
Say I have a module foo
with a function bar
. When executing foo.bar()
, is there a way for bar
to know bar
‘s name? Or better yet, foo.bar
‘s name?
#foo.py
def bar():
print "my name is", __myname__ # <== how do I calculate this at runtime?
24 s
import inspect
def foo():
print(inspect.stack()[0][3])
print(inspect.stack()[1][3]) # will give the caller of foos name, if something called foo
foo()
output:
foo <module_caller_of_foo>