python获取当前运行函数名称的方法实例代码
python获取当前运行函数名称的方法实例代码
摘要:c/c++中获取函数所在源码名,函数名和行号的方法很简单__FILE__,__FUNCTION__和__LINE__python没有这种语法,但也可以通过某种方法得到,这里给出例子,使用异常信息得到【可能会损失性能】
直接贴代码[可参考python核心编程4.4]
#获取调用该函数所在(被调用)的函数名
#author:peterguo@vip.qq.com defget_func_name(): importsys try: raiseException except: exc_info=sys.exc_info()#返回异常类型,异常,traceback对象 traceObj=exc_info[2]#traceback对象 frameObj=traceObj.tb_frame#获取frame对象,即本函数的frame信息 #printframeObj.f_code.co_name,frameObj.f_lineno#请在使用的时候将其注释 Upframe=frameObj.f_back#获取该代码段的frame信息,即调用该函数的函数frame #printUpframe.f_code.co_name,Upframe.f_lineno#请在使用的时候将其注释 return(Upframe.f_code.co_name,Upframe.f_lineno)[0]#获取名称 调用方法
获取文件名路径,函数名,行号
------------------------------------------------------------------------------
defgetCurRunPosInfo(): importsys try: raiseException except: exc_info=sys.exc_info() traceObj=exc_info[2] frameObj=traceObj.tb_frame #printframeObj.f_code.co_name,frameObj.f_lineno Upframe=frameObj.f_back #printUpframe.f_code.co_name,Upframe.f_lineno return(Upframe.f_code.co_filename,Upframe.f_code.co_name,Upframe.f_lineno)
#测试代码 deftest1(): printgetCurRunPosInfo() deftest2(): printget_func_name() 输出: >>('demo.py','test1',44) >>test2
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!