尋找函數的身份:從內部揭開它的名字
在編碼領域,函數通常充當構建塊,執行特定任務並為更大的項目奠定基礎。但是,您是否遇到過需要知道目前正在執行的函數的名稱的情況?
想像一個名為 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中文網其他相關文章!