python获取当前运行函数名称的方法实例代码

1162次阅读  |  发布于5年以前

python获取当前运行函数名称的方法实例代码

摘要: c/c++中获取函数所在源码名,函数名和行号的方法很简单 FILE,FUNCTIONLINE 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

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8