有没有办法从函数内部确定函数的名称?
def foo(): print("my name is", __myname__) # <== how do I calculate this at runtime?
在上面的例子中, 的主体foo将以某种方式访问函数名称,"foo"而无需对其进行硬编码。输出将是:
foo
"foo"
>>> foo() my name is foo
__name__是的,你可以使用a在函数内部确定函数的名称__name__属性
__name__
Her
def foo(): pr print("my name is", foo.__name__) foo() foo() `
foo.__name__
inspect
如果你想要一种可以在各种情况下工作的更动态的方法(例如,在处理传递的函数对象时),你可以使用inspect模块
import inspect def foo(): # Retrieve the name of the calling function current_function_name = inspect.currentframe().f_code.co_name print("my name is", current_function_name) foo()
inspect.currentframe()
f_code.co_name
import inspect def foo(): current_function_name = inspect.currentframe().f_code.co_name print("my name is", current_function_name) foo()
这也会输出:
my name is foo
使用__name__直接访问函数名称是直接而有效的,同时inspect提供了一种方法