直接貼代碼[可參考python核心編程4.4]python
#獲取調用該函數所在(被調用)的函數名 編程
#author:peterguo@vip.qq.com def get_func_name(): import sys try: raise Exception except: exc_info = sys.exc_info() #返回 異常類型,異常,traceback對象 traceObj = exc_info[2] #traceback對象 frameObj = traceObj.tb_frame #獲取frame對象,即本函數的frame信息 #print frameObj.f_code.co_name,frameObj.f_lineno #請在使用的時候將其註釋 Upframe = frameObj.f_back #獲取該代碼段的frame信息,即調用該函數的函數frame #print Upframe.f_code.co_name, Upframe.f_lineno #請在使用的時候將其註釋 return (Upframe.f_code.co_name, Upframe.f_lineno)[0] #獲取名稱 調用方法
獲取文件名路徑,函數名,行號函數
------------------------------------------------------------------------------測試
def getCurRunPosInfo(): import sys try: raise Exception except: exc_info = sys.exc_info() traceObj = exc_info[2] frameObj = traceObj.tb_frame #print frameObj.f_code.co_name,frameObj.f_lineno Upframe = frameObj.f_back #print Upframe.f_code.co_name, Upframe.f_lineno return (Upframe.f_code.co_filename, Upframe.f_code.co_name, Upframe.f_lineno)
#測試代碼 def test1(): print getCurRunPosInfo() def test2(): print get_func_name() 輸出: >>('demo.py', 'test1', 44) >>test2