python獲取當前運行函數名稱的方法實例代碼
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
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關文章
簡單介紹Python中的filter和lambda函數的使用
這篇文章主要簡單介紹了Python中的filter和lambda函數的使用,是Python學習中的基礎,同時lambda匿名函數的使用也是經常被用來對比各種編程語的重要特性,言需要的朋友可以參考下2015-04-04
Python接收Gmail新郵件并發(fā)送到gtalk的方法
這篇文章主要介紹了Python接收Gmail新郵件并發(fā)送到gtalk的方法,實例分析了Python操作郵件的技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-03-03
前女友發(fā)來加密的"520快樂.pdf",我用python破解開之后,卻發(fā)現
520收到前女友發(fā)來的加密PDF文件,說打開之后有驚喜,難道是要復合?我用python破解開之后,卻發(fā)現...python干貨+劇情滿滿收藏收藏2021-08-08

