寻找函数的身份:从内部揭开它的名字
在编码领域,函数通常充当构建块,执行特定任务并为更大的项目奠定基础。但是,您是否遇到过需要知道当前正在执行的函数的名称的情况?
想象一个名为 foo 的函数希望声明其身份:“Hello,world!我的名字是 foo。”但是 foo 如何在不显式硬编码的情况下确定自己的名称?
进入动态内省的领域。借助检查模块,可以从该函数内部检索有关当前正在执行的函数的信息。深入到堆栈的深处,inspect.stack() 方法返回一个帧列表,每个帧代表当前执行堆栈中的一个调用。
在我们的例子中,inspect.stack()[0][ 3]表示当前函数的框架,而inspect.stack()[1][3]表示当前函数的调用者。利用这些知识,以下代码允许 foo 声明其身份,而无需诉诸静态字符串:
<code class="python">import inspect def foo(): print("my name is", inspect.stack()[0][3]) print("caller of foo:", inspect.stack()[1][3]) foo()</code>
就像魔术一样,输出显示:
my name is foo caller of foo: <module_caller_of_foo>
利用内省的力量,函数现在可以识别自己的名称,使它们能够在不断变化的代码执行环境中动态调整和传达自己的身份。
以上是Python 中的函数如何发现自己的名称?的详细内容。更多信息请关注PHP中文网其他相关文章!