首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在运行时找到当前函数的名称?

在运行时找到当前函数的名称,可以使用以下方法:

  1. 使用 sys._getframe() 函数:
代码语言:python
代码运行次数:0
复制
import sys

def get_current_function_name():
    return sys._getframe().f_code.co_name

def test_function():
    print("Current function name:", get_current_function_name())

test_function()
  1. 使用 inspect 模块:
代码语言:python
代码运行次数:0
复制
import inspect

def get_current_function_name():
    return inspect.currentframe().f_back.f_code.co_name

def test_function():
    print("Current function name:", get_current_function_name())

test_function()

这两种方法都可以在运行时获取当前函数的名称。需要注意的是,这些方法可能会受到代码优化的影响,因此在生产环境中使用时需要谨慎。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何在运行时(Runtime)获得泛型真正类型

可以通过以下方式再运行时获得泛型真正类型 泛型如何获得具体类型 List 例子如下 来自:https://stackoverflow.com/questions/1942644/get-generic-type-of-java-util-list...,都是基于 java.lang.reflect.ParameterizedType jackson 中如何反序列化泛型 jackson 中将JSON 转为Map 可以通过如下代码实现,方式一: ObjectMapper...可以使用方式二,告知实际 Map 中存放对象,从而得到正确类型,代码如下所示: ObjectMapper mapper = new ObjectMapper(); String json = "{\...实际上也是根据 ParameterizedType 获得真正类型。...通过 TypeReference 获得真正类型 代码类似如下,最后得到 tmpType1 是 Class 类型,就能够基于它其他操作了。

2.9K20
  • Java 面试题之 Logback 打印日志是如何获取当前方法名称

    在 Java 中,有四种方法可以获取当前正在执行方法体方法名称,分别是: 使用 Thread.currentThread().getStackTrace() 方法 使用异常对象 getStackTrace...,获取当前执行方法体方法名称有什么用嘞?...可以使用这个 API 找到当前正在执行方法,具体代码如下: StackWalker walker = StackWalker.getInstance(); Optional optional...不知道大家有没有想过,我们在使用 Logback 日志框架中打印日志时,是如何获取当前执行方法体方法名称嘞?...那么到这里我就可以下一个结论了, Logback 日志框架中打印日志时,就是使用异常对象 getStackTrace() 方法来获取当前执行方法方法名称

    27430

    Java 面试题之 Logback 打印日志是如何获取当前方法名称

    在 Java 中,有四种方法可以获取当前正在执行方法体方法名称,分别是: 使用 Thread.currentThread().getStackTrace() 方法 使用异常对象 getStackTrace...,获取当前执行方法体方法名称有什么用嘞?...可以使用这个 API 找到当前正在执行方法,具体代码如下: StackWalker walker = StackWalker.getInstance(); Optional optional...不知道大家有没有想过,我们在使用 Logback 日志框架中打印日志时,是如何获取当前执行方法体方法名称嘞?...那么到这里我就可以下一个结论了, Logback 日志框架中打印日志时,就是使用异常对象 getStackTrace() 方法来获取当前执行方法方法名称

    42360

    【Unity3D】Unity 脚本 ③ ( C# 脚本执行入口函数 | 获取当前游戏物体及物体名称 | 获取游戏物体 Transform 组件数据 | UnityEngine 命名空间简介 )

    文章目录 一、 C# 脚本执行入口函数 二、 获取当前游戏物体及物体名称 三、 获取游戏物体 Transform 组件数据 四、UnityEngine 命名空间简介 一、 C# 脚本执行入口函数...上 C# 组件代码 , 程序入口是 MonoBehaviour#Start() 函数 ; 在 C# 脚本中 , 主要内容都在 Start() 函数 中实现 ; using System.Collections.Generic...---- 在 C# 脚本中 , 游戏物体类型是 GameObject , 可以通过调用 this.gameObject 获取当前 C# 脚本附着物体 , 代码如下 : // 获取当前组件附着...类 name 属性 , 即可获取当前物体名称 ; // 获取当前组件附着 游戏物体 GameObject 名称 string name = gameObject.name...名称 string name = gameObject.name; Debug.Log("C# 脚本附着游戏物体名称 : " + name); }

    1.3K10

    使用ApDiag工具进行WinCC脚本诊断

    2.4定位导致脚本阻塞函数 功能描述:使用正在运行动作“调用堆栈”信息,定位导致脚本阻塞函数。...在function3运行过程中,可以从线程当前堆栈中了解到调用它那几个函数名称。...;再仔细核对该全局动作代码,从上述调用堆栈函数列表中就可以查找到该全局动作代码中使用函数MSRTGetMsgQuit(这是一个ODK函数),可能由于该函数执行所需时间较长,或者发生了阻塞或挂起,因此使用...3使用ApDiag诊断工具帮助快速定位阻塞脚本实例 下面以一个简单测试项目为例,介绍如何使用上述方法进行脚本诊断,并快速定位到发生阻塞脚本函数名称。...,可以看出发生阻塞动作为全局动作,在“GSC 运行系统窗口”中可以查到“@c” 所对应全局动作名称,根据该动作代码和上述调用堆栈函数列表,可以判断导致阻塞函数名称为“Sleep”,由于该函数行时间过长

    2.8K20

    PHP中命名空间是怎样存在?(三)

    全局空间 当文件中定义了命名空间,也就是namesapce指定了当前命名空间后,在调用全局类、函数、常量时,需要添加一个“\”,也就是完全限定访问符号来标明这个类、函数、常量是全局那个,而不是当前命名空间中...特别是当前命名空间中包含与全局类、函数、常量同名内容时。...那么后备作用就是如果当前命名空间中没有找到时,会去全局找相关函数。在文档中定义是这样: 当 PHP 遇到一个非限定类、函数或常量名称时,它使用不同优先策略来解析该名称。...在命名空间内部(例如A\B),对非限定名称函数调用是在运行时解析。...在命名空间(例如A\B)内部对非限定名称或限定名称类(非完全限定名称调用是在运行时解析

    1K10

    《你不知道JavaScript》-- 作用域(笔记)

    变量赋值操作会执行两个动作,首先编译器会在当前作用域中声明一个变量(如果之前没有声明过),然后在运行时引擎会在作用域中查找该变量,如果能够找到就会对它赋值,否则抛出异常。...遍历嵌套作用域链规则: 引擎从当前执行作用域开始查找变量,如果找不到,就向上一级继续查找,当抵达最外层全局作用域时,无论找到还是没有找到,查找过程都会停止。...5)LHS和RHS查询都会在当前执行作用域中开始,如果没有找到所需标识符,就会向上级作用域继续查找目标标识符,这样每次上升一级作用域,最后抵达全局作用域,无论找到或没找到都将停止。...词法作用域是在写代码或者说定义时确定,而动态作用域是在运行时确定(this也是),词法作用域关注函数在何处声明,而动态作用域关注函数从何处调用。...,从而在运行时创建一个新词法作用域; 3)这两个机制副作用是引擎无法在编译时对作用域查找进行优化,因为引擎只能谨慎地认为这样优化是无效; 4)使用这其中任何一个机制都将导致代码运行变慢,建议不要使用

    69820

    昨天去面试,这5个Python面试题都被考到了,Python面试题No6

    第1题:字符串拼接–如何高效拼接两个字符串?...自省向程序员提供了极大灵活性和控制力。 说更简单直白一点:==自省就是面向对象语言所写程序在运行时,能够知道对象类型。简单一句就是,运行时能够获知对象类型。...Python中比较常见自省(introspection)机制(函数用法)有: dir(),type(), hasattr(), isinstance(),通过这些函数,我们能够在程序运行时得知对象类型...dir() 函数是 Python 自省机制中最著名部分了。它返回传递给它任何对象属性名称经过排序列表。如果不指定对象,则 dir() 返回当前作用域中名称。...monkey patch (猴子补丁) 用来在运行时动态修改已有的代码,而不需要修改原始代码。

    60540

    JavaScript 作用域不完全指北

    什么是作用域 对于几乎所有编程语言,最基本功能之一就是能够存储变量值,并且能在之后对这个值进行访问和修改。这样就会带来几个问题,这些变量存储在哪里?程序在需要时候又是如何找到它们?...下面我们从引擎、编译器和作用域角度,分析 var a = 2 这条声明语句,看看它们是如何协同完成工作 1.遇到 var a, 编译器会询问作用域是否已经有一个该名称变量存在于同一个作用域集合中...2.接下来编译器会为引擎生成运行时所需代码, 这些代码被用来处理 a = 2 这个赋值操作。 引擎运行时会首先询问作用域, 在当前作用域集合中是否存在一个叫作 a 变量。...简单来说,变量赋值操作会执行两个动作, 首先编译器会在当前作用域中声明一个变量(如果之前没有声明过), 然后在运行时引擎会在作用域中查找该变量, 如果能够找到就会对它赋值,否则就会并抛出一个异常。...因此, 在当前作用域中无法找到某个变量时, 引擎就会在外层嵌套作用域中继续查找, 直到找到该变量,或抵达最外层作用域(也就是全局作用域) 为止。

    38630

    【iOS】运行时消息传递与转发机制

    与之相反,C语言使用静态绑定,也就是说,在编译期就能决定程序运行时所应该调用函数,所以在C语言中,如果某个函数没有实现,编译时是不能通过。...在运行时,编译器会把上面这个格式方法调用转化为一条标准C语言函数调用,该函数就是鼎鼎有名objc_msgSend(),该函数是消息objc里在运行时传递机制中核心函数,其原型如下: void objc_msgSend...如果能找到与选择子名称相符方法,就根据IMP指针跳转到方法实现代码,调用这个方法实现。...如果找不到与选择子名称相符方法,接收者会根据所属类superClass指针,沿着类继承体系继续向上查找(向父类查找),如果 能找到名称相符方法,就根据IMP指针跳转到方法实现代码,调用这个方法实现...:(SEL)selector 方法参数代表未知选择子,返回值为备援接受者,若当前接受者能找到备援接受者,就直接返回,这个未知选择子将会交由备援接受者处理。

    8.4K50

    栈溢出

    ebp 存储当前函数状态基地址,在函数行时不变,可用来索引确定函数参数或局部变量位置。 eip 用来存储即将执行程序指令地址。...libc动态链接库中函数被广泛应用,所以大概率可在内存中找到该动态库。其中也包含一些系统级函数,通常使用这些系统级函数来获得当前进程控制权。可能需要参数,所以溢出数据也要包括必要参数。...静态链接得到可执行文件包含外部函数全部代码,动态链接得到可执行文件并不包含外部函数代码,而是在运行时将动态链接库(若干外部函数集合)加载到内存某个位置,再在发生调用时去链接库定位所需函数。...所以假如我们知道了函数 A 行时地址(读取 GOT 表内容),也知道函数 A 和函数 B 在动态链接库内相对位置,就可以推算出函数 B 行时地址。 3.如何实现 GOT 表中数据修改?...很难找到合适函数来完成这一任务,不过我们还有强大 ROP。 实践才能真正理解如何操作。纸上得来终觉浅,得知此事须躬行。

    1.3K20

    分享 3 个 你可能会用上 JavaScript 类

    image.png 我们可以利用从类构造函数内部访问类构造函数名称事实。...结论 探索 JavaScript 非常有趣,这意味着根据你如何扭转和转动,你最终可能会找到一两个可能最终被证明是有用技巧。...学习更多技能 请点击下方公众号 我们可以利用从类构造函数内部访问类构造函数名称事实。...3 、运行时多个类扩展(mixins) 在 OOP 中,您可以使一个类扩展另一个类,并且您必须在代码执行之前这样做。对于一些非常具体问题,我在代码中一直在探索一件事是在运行时扩展类想法。...结论 探索 JavaScript 非常有趣,这意味着根据你如何扭转和转动,你最终可能会找到一两个可能最终被证明是有用技巧。

    36230

    建立java和jin函数之间关系

    如何建立java和jin函数之间关系: 1.静态注册: 借助于javah工具,该工具会在编译时对每个class文件中声明了native函数输出一份。...也就是编译为每个class生产一份h头文件,头文件中存储对应java方法native函数指针,在运行时调用jni函数时,进行查找对应函数指针运行,接着进行关系映射缓存起来下次进来找到对应直接运行指针即可...如果我们能够提前知道java中函数对应是哪个jni函数那么久不需要上面那么麻烦过程了(先编译生产头文件,运行时在找在确定函数指针; 而loadlibrary函数调用时会去首先寻找so库中load...java函数名称,签名信息,jni层对应函数指针,属于哪个类java函数。知道这些信息将其注册到一个映射表中。 后期运行时根据函数名称签名信息所属类就可以找到对应jni函数指针。...一个是先造编译时定义jni函数指针,之后运行时根据函数信息在找在缓存映射运行,因为后期要根据java方法名称来找对应jni函数指针,所以jni函数定义要和java方法对应。类名-方法名会很长。

    56130

    JS入门难点解析3-作用域

    最重要是,程序需要时如何找到它们?要解决这个问题,我们需要一套规则来存储变量,并且之后可以方便地找到这些变量。这套规则被称为作用域。 2....接下来编译器会为引擎生成运行时所需代码,这些代码被用来处理 a = 2 这个赋值操作。引擎运行时会首先询问作用域,在当前作用域集合中是否存在一个叫作 a 变量。...总结:变量赋值操作会执行两个动作,首先编译器会在当前作用域中声明一个变量(如果之前没有声明过),然后在运行时引擎会在作用域链中查找该变量,如果能够找到就会对它赋值。...因此,在当前作用域中无法找到某个变量时,引擎就会在外层嵌套作用域中继续查找,直到找到该变量, 或抵达最外层作用域(也就是全局作用域)为止。...编译词法分析阶段基本能够知道全部标识符在哪里以及是如何声明,从而能够预测在执行过程中如何对它们进行查找。 动态作用域 函数作用域是在函数调用时候才决定

    56720

    您对 Linux 系统了解多少?

    让我们首先定义什么是静态和运行时系统状态,然后探索如何可视化内核静态和运行时系统部分。 静态系统视图包括在内核配置中启用系统调用、特性、静态和动态模块。...运行时系统视图包括在运行时使用系统调用、ioctl 调用和子系统。工作负载可以加载和卸载模块,并通过调整系统参数来更改运行时系统配置以适应其需求。...这与 checksyscalls.sh 显示相符。 查找支持功能 让我们看看如何在系统上找到支持功能。可以使用 scripts/get_feat.pl 列出架构内核特性支持矩阵。...了解系统运行时活动 到目前为止,我们已经找到找到系统静态方法。现在让我们切换到系统行时状态。 Linux 内核事件跟踪功能可以帮助我们了解运行时状态。 启用事件跟踪可以深入了解系统运行时活动。...事件跟踪允许您在运行时对支持/可用事件进行启用和禁用追踪。

    10610

    WinCC VBS 脚本实用技巧问答 (TIA Portal )

    WinCC Professional在用户定义C函数里可以调用DLL函数 (DLL = Dynamic Link Library) 。 5、如何用VBS脚本确定鼠标当前位置?...如果太多脚本在结束前调用自己或者调用其他脚本,会引起到达最大嵌套深度消息。 解决方法 检查脚本过程处理,如有必要,减少脚本嵌套。 13、如何确定当前画面的编号和画面名称?...通过预定义 VB 函数 “HmiRuntime.BaseScreenName ” 返回值提供了当前画面的名字。 注意 不能使用脚本通过相关画面的“属性”直接读取画面名称/编号。...17、如何通过脚本修改文本域内容? 文本域文本在运行时可以通过修改相应对象属性而改变。...对象属性修改仅是暂时,当屏幕更改后视图使用组态时配置。 21、如何在运行时选择一个画面对象(例如输入输出域)?

    5.5K20
    领券