小能豆

从该函数内部确定函数名称

python

有没有办法从函数内部确定函数的名称?

def foo():
    print("my name is", __myname__)  # <== how do I calculate this at runtime?

在上面的例子中, 的主体foo将以某种方式访问函数名称,"foo"而无需对其进行硬编码。输出将是:

>>> foo()
my name is foo

阅读 36

收藏
2024-09-13

共1个答案

小能豆

__name__是的,你可以使用a在函数内部确定函数的名称__name__属性

Her

def foo():

    pr
print("my name is", foo.__name__)

foo()


foo()
`

解释

  • foo.__name__返回foo作为"foo"
  • 属性__name__

使用inspectM

如果你想要一种可以在各种情况下工作的更动态的方法(例如,在处理传递的函数对象时),你可以使用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提供了一种方法

2024-09-13