这里有新鲜出炉的 Python 教程,程序狗速度看过来!
Python 是一种面向对象、解释型计算机程序设计语言,由 Guido van Rossum 于 1989 年底发明,第一个公开发行版发行于 1991 年。Python 语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够把用其他语言制作的各种模块(尤其是 C/C++)很轻松地联结在一起。
这篇文章主要介绍了 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
来源: http://www.phperz.com/article/17/0507/333846.html