python中獲取當前運行函數名稱的方法



直接貼代碼[可參考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
相關文章
相關標籤/搜索