3

试图在 Python 中获取函数的全名。 这个关于函数名的问题指定__name__应该使用该字段来获取函数名。但是,对于这种特殊情况,需要全名:包含它的模块加上函数的名称。

这样做的目的是允许通过同一项目中的不同程序访问功能。

例子:

# file /my/project/funcs.py
def fun_1(a):
    ...

# Looking for a function like this:

def get_fun_name(function):
    ...

>>> get_fun_name(fun_1)
my.project.funcs.fun_1

如您所见,理想的答案是打印出 hte 模块和作为参数提供的函数对象的函数。

非常感谢!任何帮助都将不胜感激!

4

2 回答 2

4

怎么样

def get_fun(fn):
    return '.'.join([fn.__module__, fn.__name__])

(参见例如http://docs.python.org/2/reference/datamodel.html

于 2013-09-09T23:20:06.580 回答
2

如果您需要名称和模块,它们可用作__name____module__属性。请注意,对于在另一个函数或类中定义的函数,这仍然会给您一个不准确的“路径”。Python 3.3 添加了一个__qualname__包含该信息的属性。

于 2013-09-09T23:30:35.713 回答