python獲取當(dāng)前運行函數(shù)名稱的方法實例代碼
python獲取當(dāng)前運行函數(shù)名稱的方法實例代碼
摘要: c/c++中獲取函數(shù)所在源碼名,函數(shù)名和行號的方法很簡單 __FILE__,__FUNCTION__和__LINE__ python沒有這種語法,但也可以通過某種方法得到,這里給出例子,使用異常信息得到【可能會損失性能】
直接貼代碼[可參考python核心編程4.4]
#獲取調(diào)用該函數(shù)所在(被調(diào)用)的函數(shù)名
#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對象,即本函數(shù)的frame信息
#print frameObj.f_code.co_name,frameObj.f_lineno #請在使用的時候?qū)⑵渥⑨?
Upframe = frameObj.f_back #獲取該代碼段的frame信息,即調(diào)用該函數(shù)的函數(shù)frame
#print Upframe.f_code.co_name, Upframe.f_lineno #請在使用的時候?qū)⑵渥⑨?
return (Upframe.f_code.co_name, Upframe.f_lineno)[0] #獲取名稱
調(diào)用方法
獲取文件名路徑,函數(shù)名,行號
------------------------------------------------------------------------------
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
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
簡單介紹Python中的filter和lambda函數(shù)的使用
這篇文章主要簡單介紹了Python中的filter和lambda函數(shù)的使用,是Python學(xué)習(xí)中的基礎(chǔ),同時lambda匿名函數(shù)的使用也是經(jīng)常被用來對比各種編程語的重要特性,言需要的朋友可以參考下2015-04-04
Python接收Gmail新郵件并發(fā)送到gtalk的方法
這篇文章主要介紹了Python接收Gmail新郵件并發(fā)送到gtalk的方法,實例分析了Python操作郵件的技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-03-03
pandas將Series轉(zhuǎn)成DataFrame的實現(xiàn)
本文主要介紹了pandas將Series轉(zhuǎn)成DataFrame的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
前女友發(fā)來加密的"520快樂.pdf",我用python破解開之后,卻發(fā)現(xiàn)
520收到前女友發(fā)來的加密PDF文件,說打開之后有驚喜,難道是要復(fù)合?我用python破解開之后,卻發(fā)現(xiàn)...python干貨+劇情滿滿收藏收藏2021-08-08

