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

如何获取函数名

获取函数名可以通过以下几种方式:

  1. 使用内置函数__name__:在Python中,每个函数都有一个内置属性__name__,可以直接访问该属性来获取函数的名称。例如:
代码语言:txt
复制
def my_function():
    pass

print(my_function.__name__)  # 输出:my_function
  1. 使用内置模块inspect:Python的inspect模块提供了一些有用的函数,可以用于获取函数的信息,包括函数名。例如:
代码语言:txt
复制
import inspect

def my_function():
    pass

print(inspect.getframeinfo(inspect.currentframe()).function)  # 输出:my_function
  1. 使用装饰器:可以定义一个装饰器函数,在函数被调用时获取函数名并进行相应的处理。例如:
代码语言:txt
复制
def get_function_name(func):
    def wrapper(*args, **kwargs):
        print(func.__name__)  # 输出函数名
        return func(*args, **kwargs)
    return wrapper

@get_function_name
def my_function():
    pass

my_function()  # 输出:my_function

这些方法可以根据具体的使用场景选择合适的方式来获取函数名。在实际开发中,根据不同的需求和框架,可能会有其他更灵活的方式来获取函数名。

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

相关·内容

  • python笔记20-获取当前运行函数名

    前言 写完代码之后,一般为了方便查看日志,可以在日志输出中加入当前运行的函数名称或类和方法名称,以便于代码报错的时候能快速找到报错的是哪个函数或方法。 那么如何获取当前运行函数(或方法)的名称呢?...获取函数名称 1.在函数外部获取函数名称,用.name获取 ? 2.函数内部获取当前函数名称,用sys._getframe().f_code.co_name方法获取 ?...类和方法名称获取 1.获取类名称self.class.name ? 2.获取类里面方法名称,跟获取函数名称一样sys._getframe().f_code.co_name) ?...inspect模块 1.使用inspect模块动态获取当前运行的函数名(或方法名称) # coding:utf-8 import inspect def get__function_name():...'''获取正在运行函数(或方法)名称''' return inspect.stack()[1][3] def yoyo(): print("函数名称:%s"%get__function_name

    2.5K10

    泛函编程(1)-泛函编程是如何实现的

    泛函编程就是把函数组合起来形成一个完整的程序。可想而知,函数组合的过程可以是曲折的,形成的程序可以是复杂的。那么泛函编程又是如何保证一个复杂的函数组合程序是正确无误的呢?...实际上这也是泛函编程的重点所在,我看还是要解释清楚才行。     泛函程序是由纯函数组成。所谓纯函数(Pure Function)是指这个函数的结果完全或只依赖它的输入。...因为泛函程序是由纯函数组成,纯函数是”可等量替换的“,具备行为不可变化特性,所以能保证泛函程序的正确性。    ...在Scala语言中 “+” 是个函数名称,我们可以确定这个“+”函数是个纯函数,因为我们可以放心的用结果2来“等量替代” 表达式1+1。...泛函编程要求尽量使用”不可改变的“(Immutable)数据结构来保证程序的纯洁性。泛函编程就好像是使用”不可改变的“数据结构过程的挣扎,起码对我来说是这样的。

    1.7K80

    如何在 Go 函数中获取调用者的函数名、文件名、行号...

    对于在记录日志时记录调用 Logger 方法的调用者的函数名、行号这些信息。...如果让我们用 Go 设计一个Log Facade,就需要我们自己在门面里获取调用者的函数名、文件位置了,那么在Go里面怎么实现这个功能呢?...是不是有点晕,这里举个例子 func CallerA() { //获取的是 CallerA 这个函数的调用栈 pc, file, lineNo, ok := runtime.Caller(0)...获取调用者的函数名 runtime.Caller 返回值中第一个返回值是一个调用栈标识,通过它我们能拿到调用栈的函数信息 *runtime.Func,再进一步获取到调用者的函数名字,这里面会用到的函数和方法如下...总结 今天介绍了通过 runtime.Caller 回溯调用栈获取调用者的信息的方法,虽然强大,不过频繁获取这个信息也是会对程序性能有影响。

    6.7K20

    【小家java】java8新特性之---反射获取方法参数名

    方法的参数名,在很多时候我们是需要反射得到的。但是在java8之前,代码编译为class文件后,方法参数的类型是固定的,但参数名称却丢失了,这和动态语言严重依赖参数名称形成了鲜明对比。...比如mybatis的Dao层接口方法,需要特意用个注解@Param来显示标识出参数名,当时写的时候我觉得挺傻X的一件事,所以java8来了,带来的新特性解决了这一问题 获取方法参数名称 方法一:采用javassit...包获取,很麻烦,此处省略 方法二:通过spring的LocalVariableTableParameterNameDiscoverer public static void main(String[...,调试时看到方法名称是通过jdk代理过的,拿不到参数名。...其实并不是,因为java8为了保持向下兼容,默认编译是不能获取到参数名称的。

    1.2K40

    Java获取函数参数名称的另一种方法

    https://blog.csdn.net/10km/article/details/79308845 关于获取java 方法的参数名(这里指java 1.8以前的版本,java 1.8...已经提供了相关的原生方法),网上可以找到不少文章,这篇文章讲得比较全面了:《Java获取函数参数名称的几种方法》,无外乎是借用asm,javasist等第三方库。...我对axis2比较熟悉,知道axis2中在生成client代码时也需要获取方法的参数名,于是通过分析源码找到了axis2的实现代码。...axis2获取java参数名的实现代码的package为org.apache.axis2.description.java2wsdl.bytecode,在axis2核心jar包axis2-kernel-...> clazz; /** 当获取无法参数名时是否返回arg,arg2...格式的替代名字 */ private boolean returnFakeNameIfFail = true;

    90810

    如何识别C++编译以后的函数名

    如何识别C++编译以后的函数名(demangle) C/C++语言在编译以后,函数的名字会被编译器修改,改成编译器内部的名字,这个名字会在链接的时候用到。...又如N:C:Func 经过修饰后就是 _ZN1N1C4FuncE, 这个函数名后面跟参数类型。...ZN3art25JniMethodEndWithReferenceEP8_jobjectjPNS_6ThreadE+30) 类或命名空间中的变量或函数: 以”_ZN”开头,然后是各个空间和类的名字,每个名字前是名的字符长度,然后是变量/函数名的长度和变量.../函数名,后面紧跟”E”,然后如果是函数则跟参数别名,如果是变量则什么都不用加。...HandlerThread.java:61) 参考链接 关于Android中so的符号表导出以及C++的符号改编规则 Android下打印调试堆栈方法 Coredump介绍及如何在

    2.6K20

    如何快速创建制作婚礼邀请函

    创建制作一个优秀的婚礼请柬很重要,那么该如何创建一个非常优秀并且免费的婚礼邀请函呢?请仔细阅读本文的每一个步骤。...那么怎样制作一个完美的婚礼邀请函呢? 在搜索栏内输入婚礼邀请函,就可以直接打开了,亮点是无需登录,无需注册,即时填写即时保存。...在这里你可以点击打开并填写,然后就会入可填写页面,填写最真挚的邀请函,邀请亲友来为你们的婚礼献上最美的祝福。...结语; 当然了,ONLYOFFICE表单模板库内,不仅仅有婚礼邀请函的模板,还有其他百余种各式各样的模板等你挑选,如果你还在付费使用表单模板,那么我真心强烈推荐你来试试ONLYOFFICE表单模板。

    1.1K40

    为何Spring MVC可获取到方法参数名,而MyBatis却不行?【享学Spring MVC】

    如下案例,很明显就是获取不到真实参数名喽: public static void main(String[] args) throws NoSuchMethodException { Method...控制台输出: fsx---18 从结果中可见:看似办不到的case,Spring MVC竟然给做到了(获取到了方法参数名,进而完成封装),是不是有点不可思议???...再看此例(还原Spring MVC获取参数名的场景): public static void main(String[] args) throws NoSuchMethodException {...java.lang.String----name class java.lang.Integer----age 从结果能看出来:Spring MVC借助ParameterNameDiscoverer完成了方法参数名的获取...---- 获取方法参数名的3种方式介绍 虽然Java编译器默认情况下会抹去方法的参数名,但有上面介绍了字节码的相关知识可知,我们还是有方法来得到方法的参数名的。下面介绍3个方案,供以参考。

    1.3K32

    如何在Go的函数中得到调用者函数名?

    break 10 } 11 } 12} func FuncForPC(pc uintptr) *Func FuncForPC 是一个有趣的函数, 它可以把程序计数器地址对应的函数的信息获取出来...它的返回值是一个*Func类型的值,通过*Func可以获得函数地址、文件行、函数名等信息。...除了上面获取程序计数器的方式,也可以通过反射的方式获取函数的地址: 1runtime.FuncForPC(reflect.ValueOf(foo).Pointer()).Name() 获取程序堆栈 在程序...panic的时候,一般会自动把堆栈打出来,如果你想在程序中获取堆栈信息,可以通过debug.PrintStack()打印出来。...利用堆栈信息还可以获取goroutine的id, 参考: 再谈谈获取 goroutine id 的方法 1func GoID() int { 2 var buf [64]byte 3

    5.3K30

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券