好的,所以我有一个函数将函数作为参数。
我想附加已传入的函数(不是成员)的实际名称...
def a_specially_named_function(g):
return ()
def analyze_function(function):
print ...
analyze_function(a_specially_named_function)
>>> "a_specially_named_function"
我该怎么做?在.NET中我相信我会使用反射...我想这样做而不必添加成员或任何东西......
答案 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']