python獲取當前運行函數名稱的方法實例代碼
摘要: c/c++中獲取函數所在源碼名,函數名和行號的方法很簡單 __FILE__,__FUNCTION__和__LINE__ python沒有這種語法,但也可以通過某種方法得到,這里給出例子,使用異常信息得到【可能會損失性能】
直接貼代碼[可參考python核心編程4.4]
#獲取調用該函數所在(被調用)的函數名
#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
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
新聞熱點
疑難解答