这就是我需要的:

def get_invoker():
    # your magic here

# invoker.py

def f():
    invoker = get_invoker()
    print(invoker)


# module1.py
class C(object):
    def invoke_f(self):
        f()


f()
# print <module1>

c = C()
c.invoke_f()
# print C.invoke_f


可能吗?我知道inspect拥有所有这些魔力,但是我找不到它。

编辑:

我想获取函数对象(或模块)。不只是名字。

最佳答案

像这样:

>>> import inspect
>>> def called_function():
...     print inspect.stack()[1][3]
...
>>> def caller():
...     called_function()
...
>>> caller()
caller

10-01 22:01