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


Posted in Python onApril 06, 2017

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 相关文章推荐
Python字符串处理实例详解
May 18 Python
在pandas中一次性删除dataframe的多个列方法
Apr 10 Python
解决Python一行输出不显示的问题
Dec 03 Python
python pands实现execl转csv 并修改csv指定列的方法
Dec 12 Python
django基于cors解决跨域请求问题详解
Aug 06 Python
pytorch 图像中的数据预处理和批标准化实例
Jan 15 Python
Python自动化测试笔试面试题精选
Mar 12 Python
使用python实现飞机大战游戏
Mar 23 Python
Windows 下更改 jupyterlab 默认启动位置的教程详解
May 18 Python
keras实现多种分类网络的方式
Jun 11 Python
教你怎么用Python实现GIF动图的提取及合成
Jun 15 Python
Python中可变和不可变对象的深入讲解
Aug 02 Python
python爬取w3shcool的JQuery课程并且保存到本地
Apr 06 #Python
使用Python对SQLite数据库操作
Apr 06 #Python
使用Python对MySQL数据操作
Apr 06 #Python
windows 10下安装搭建django1.10.3和Apache2.4的方法
Apr 05 #Python
Python使用迭代器捕获Generator返回值的方法
Apr 05 #Python
由浅入深讲解python中的yield与generator
Apr 05 #Python
Python中shutil模块的学习笔记教程
Apr 04 #Python
You might like
PHP容易被忽略而出错陷阱 数字与字符串比较
2011/11/10 PHP
MySQL的FIND_IN_SET函数使用方法分享
2012/03/27 PHP
关于php操作mysql执行数据库查询的一些常用操作汇总
2013/06/24 PHP
php数组去重复数据示例
2014/02/25 PHP
jQuery Mobile + PHP实现文件上传
2014/12/12 PHP
php猜单词游戏
2015/09/29 PHP
深入浅析用PHP实现MVC
2016/03/02 PHP
教你在header中隐藏php的版本信息
2016/08/10 PHP
jquery select下拉框操作的一些说明
2010/04/02 Javascript
JS 图片缩放效果代码
2010/06/09 Javascript
返回对象在当前级别中是第几个元素的实现代码
2011/01/20 Javascript
JavaScript面向对象(极简主义法minimalist approach)
2012/07/17 Javascript
js报$ is not a function 的问题的解决方法
2014/01/20 Javascript
jquery制作居中遮罩层效果分享
2014/02/21 Javascript
Jquery解析Json格式数据过程代码
2014/10/17 Javascript
jQuery中slice()方法用法实例
2015/01/07 Javascript
jQuery实现美观的多级动画效果菜单代码
2015/09/06 Javascript
基于jquery fly插件实现加入购物车抛物线动画效果
2016/04/05 Javascript
javascript实现起伏的水波背景效果
2016/05/16 Javascript
15位和18位身份证JS校验的简单实例
2016/07/18 Javascript
深入理解React中es6创建组件this的方法
2016/08/29 Javascript
JavaScript中三个等号和两个等号的区别(== 和 ===)浅析
2016/09/22 Javascript
nodejs socket服务端和客户端简单通信功能
2017/09/14 NodeJs
JavaScript 自定义事件之我见
2017/09/25 Javascript
浅谈Angular文字折叠展开组件的原理分析
2017/11/24 Javascript
[51:29]完美世界DOTA2联赛循环赛 Matador vs Forest BO2第一场 11.05
2020/11/05 DOTA
python使用递归解决全排列数字示例
2014/02/11 Python
python递归删除指定目录及其所有内容的方法
2017/01/13 Python
Python3实现爬取指定百度贴吧页面并保存页面数据生成本地文档的方法
2018/04/22 Python
python求加权平均值的实例(附纯python写法)
2019/08/22 Python
Python面向对象之多态原理与用法案例分析
2019/12/30 Python
深入了解Python装饰器的高级用法
2020/08/13 Python
大学应届毕业生求职信
2014/05/24 职场文书
检讨书怎么写
2015/01/23 职场文书
SQL Server——索引+基于单表的数据插入与简单查询【1】
2021/04/05 SQL Server
《吸血鬼幸存者》新内容发布 追加多个全新模式
2022/04/07 其他游戏