首頁  >  文章  >  後端開發  >  利用python取得目前運行函數名稱的方法

利用python取得目前運行函數名稱的方法

怪我咯
怪我咯原創
2017-04-10 11:11:511489瀏覽

這篇文章主要介紹了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取得目前運行函數名稱的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn