Python3可以使用內置模塊inspect中的getframeinfo函數來獲取調用者函數名。
示例代碼如下:
import inspect
def callee_function():
caller_function_name = inspect.stack()[1][3]
print("Caller function name:", caller_function_name)
def caller_function():
callee_function()
caller_function()
輸出:
Caller function name: caller_function
在callee_function中,我們使用了inspect.stack()函數來獲取調用棧。這個函數會返回一個列表,其中每個元素對應一個棧幀(調用棧中的一個層級)。列表中的第一個元素是當前函數的棧幀,第二個元素是調用當前函數的函數的棧幀。因此,我們使用inspect.stack()[1]來獲取調用者的棧幀。獲取到棧幀后,我們可以從中提取調用者函數的名稱(即第3個元素),使用inspect.stack()[1][3]即可。