获取传入函数的名称

时间:2015-11-28 18:40:24

标签: python

好的,所以我有一个函数将函数作为参数。

我想附加已传入的函数(不是成员)的实际名称...

def a_specially_named_function(g):
    return ()

def analyze_function(function):
    print ...


analyze_function(a_specially_named_function)
>>> "a_specially_named_function"

我该怎么做?在.NET中我相信我会使用反射...我想这样做而不必添加成员或任何东西......

1 个答案:

答案 0 :(得分:2)

魔术场名为 .__ name __

def a_specially_named_function(g):
    return ()

def analyze_function(function):
    print function.__name__


analyze_function(a_specially_named_function)
>>> a_specially_named_function

此外,您可以使用 dir 函数检查python中对象的所有可用字段,包括其魔术成员

dir(a_specially_named_function)
>>> ['__call__', '__class__', '__closure__', '__code__', 
     '__defaults__', '__delattr__', '__dict__', '__doc__',
     '__format__', '__get__', '__getattribute__', '__globals__',
     '__hash__', '__init__', '__module__', '__name__', '__new__', 
     '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', 
     '__sizeof__', '__str__', '__subclasshook__', 'func_closure', 
     'func_code', 'func_defaults', 'func_dict', 'func_doc', 
     'func_globals', 'func_name']