Python获取当前函数名称方法实例分享
作者:kwsy2008 发布时间:2023-12-22 01:16:57
标签:python,函数,模块
本文实例主要是Python中获取当前运行函数的名称,具体如下。
python 具有强大的自省能力,在函数运行时,可以在函数内部获取到当前所在的函数名称,请看示例代码
#coding=utf-8
import sys
import inspect
def my_name():
print '1' ,sys._getframe().f_code.co_name
print '2' ,inspect.stack()[0][3]
def get_current_function_name():
print '5', sys._getframe().f_code.co_name
return inspect.stack()[1][3]
class MyClass:
def function_one(self):
print '3',inspect.stack()[0][3]
print '4', sys._getframe().f_code.co_name
print "6 %s.%s invoked"%(self.__class__.__name__, get_current_function_name())
if __name__ == '__main__':
my_name()
myclass = MyClass()
myclass.function_one()
示例演示了两种获取当前所在函数名称的方法,一种是用sys内置模块,一种是使用inspect模块。运行结果如下:
1 my_name
2 my_name
3 function_one
4 function_one
5 get_current_function_name
6 MyClass.function_one invoked
sys.getframe().f_code.co_name 方法永远获取当前所在的函数名称,inspect.stack()方法相对更灵活一些,在get_current_function_name函数中,sys获取的函数名称是get_cu
rrent_function_name,而inspect方法返回的结果是function_one。inspect.stack记录了当前的栈内信息,想进一步了解可以打印inspect.stack()信息。
我在function_one函数中调用了get_current_function_name,因此inspect.stack()返回的list中的第一个元组是有关get_current_function_name信息的,
第二个元组才是function_one的相关信息。
来源:http://blog.csdn.net/kwsy2008/article/details/52227892


猜你喜欢
- 神经网络梯度下降法在详细了解梯度下降的算法之前,我们先看看相关的一些概念。1. 步长(Learning rate):步长决定了在梯度下降迭代
- 《页面表达常用方式》是整个“web交互设计方法”中的一部分:设计师在设计页面时,应该在页面上建立许多视觉层次,引导用户的视觉焦点。把用户的注
- python,pycharm的环境变量设置官网下载安装python解释器时,如果忘记勾选添加到环境变量[add to path],可进行如下
- //清空form选择 function clearForm(id){ var formObj = document.getElementBy
- 一、多线程间的资源竞争以下列task1(),task2()两个函数为例,分别将对全局变量num加一重复一千万次循环(数据大一些,太小的话执行
- 首先打开网站https://www.zymk.cn/1/37988.html打开开发者工具选择XHR标签页,没有找到什么再查看一下这些图片的
- 轮播图的根本其实就是缓动函数的封装,如果说轮播图是一辆跑动的汽车,那么缓动函数就是它的发动机,今天本文章就带大家由简入繁,封装属于自己的缓动
- 绿色在黄色和蓝色(冷暖)之间,属于较中庸的颜色,这样使得绿色的性格最为平和、安稳、大度、宽容。是一种柔顺、恬静、满足、优美、受欢迎之色。也是
- 那么什么这两个到底有什么区别和联系呢?我在网上搜了一下,发现很多说法,虽然大同小异,但是似乎只有下面这一段来自微软网站的比较高度抽象,而且意
- 本文主要介绍Python中,class(类)的装饰器@staticmethod和@classmethod的使用示例代码和它们的区别。1、@s
- 索引是排好序的数据结构!可以用在 where 条件查找的字段,和order by 排序的字
- 语法结构: 1. Cast 语法结构:CAST ( expression AS data_type [ ( length ) ] ) 2.
- 比如一个汉字也只会算一个字节,在排版时如果全是汉字,好说,反正没什么差别,但是如果 * 作的字符串有汉字又有英文字母时,就不方便了,以下三个函
- 实现一个支持动态扩容的数组并完成其增删改查#通过python实现动态数组"""数组特点: 占用一段
- 要说基本操作,大家基本都会,但是有时候,有些操作使用小技巧会节省很多时间。本篇描述的就是使用dict小技巧,保存到数据库,用来节省大家编码的
- 创建 NumPy ndarray 对象NumPy 用于处理数组,NumPy 中的数组对象称为 ndarray。我们可以使用 array()
- 点击vue路由跳转,控制台报错:Avoided redundant navigation to current location: &
- 基本概念简单地说,Node.js是在服务器端运行的JavaScript。 节点。$ node> console.log('He
- 详解java调用ffmpeg转换视频格式为flv注意:下面的程序是在Linux下运行的,如果在windows下rmvb转换成avi会出现问题
- mysql8.0.12安装教程,分享给大家。一.安装1.从网上下载MySQL8.0.12版本,下载地址2. 下载完成后解压我解压的路径是:D