鉴于Python
函数:
def a_method(arg1, arg2):
pass
如何提取参数的数量和名称。即,鉴于我有提及func,因此我希望func.[something]
返回("arg1", "arg2")
。
为此的使用场景是,我有一个装饰器,并且希望以与实际函数作为键一样的顺序使用方法参数。即,"a,b"
我打电话时装饰器的外观如何a_method("a", "b")
?
看一下inspect
模块-这将为你检查各种代码对象属性。
>>> inspect.getfullargspec(a_method)
(['arg1', 'arg2'], None, None, None)
其他结果是 args和* kwargs变量的名称,以及提供的默认值。即。
>>> def foo(a, b, c=4, *arglist, **keywords): pass
>>> inspect.getfullargspec(foo)
(['a', 'b', 'c'], 'arglist', 'keywords', (4,))
请注意,在某些Python实现中,某些可调用对象可能不是自省的。例如,在CPython中,C中定义的某些内置函数不提供有关其参数的元数据。结果,ValueError
如果你inspect.getfullargspec()
在内置函数上使用,则会得到一个。
从Python 3.3开始,你可以inspect.signature()
用来查看可调用对象的调用签名:
>>> inspect.signature(foo)
<Signature (a, b, c=4, *arglist, **keywords)>
问题内容: 给定以下Go方法: 我想反映参数的名称(在这里)。 我尝试了以下操作,但是它返回了结构名称(在这里): 如何获得参数名称? 问题答案: 无法获取方法或函数的参数名称。 这样做的原因是因为名称对于调用方法或函数的人并不是很重要。重要的是参数的类型及其顺序。 甲功能类型表示集合的具有相同参数和结果类型的所有功能。无论参数名称如何,具有相同参数和结果类型的2个函数的类型均相同。以下代码显示:
问题内容: 在 Java 6中 ,假设我具有以下方法签名: 我想知道在运行时传递给任何其他参数的值,这里重要的一点是我想通过参数名称获取该值。 我知道如何使用或获取参数类型的列表。 理想情况下,我想获取参数 名称 而不是类型的列表。有办法吗? 问题答案: 如果您告诉编译器将其包括在内,则可以使用参数名称(使用调试信息进行编译)。Spring 可以帮助您获取名称。该默认实现使用ASM 这样做。 与您
问题内容: 我有一个很好的功能,可以以给定类型打印有关给定方法的一些信息,这是一个goplay 除了我找不到找到方法参数名称的方法以外,我需要做的所有事情吗? 问题答案: 局部变量的名称(包括函数参数)仅适用于程序员。编译器在生成代码时将其丢弃。无法检索参数名称,因为它们在编译后的代码中不可用。
本文向大家介绍Python如何获取函数名称?,包括了Python如何获取函数名称?的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将学习如何在Python中获取函数名称。获得任何函数的名称都是一件简单的事情。对于Python2和Python3,我们有两种不同的方式。让我们看看他们两个。 Python2 Python2中的每个函数都有一个名为func_name的属性,该属性为您提供当前函数
问题内容: 我觉得我应该知道这一点,但我一直无法弄清楚…… 我想从内部获取一个方法的名称(恰好是一个集成测试),以便它可以打印出一些诊断文本。当然,我可以将方法的名称硬编码在字符串中,但是如果可能的话,我想使测试更加干燥。 问题答案: 涉及通过诸如此类进行内省的答案是合理的。但是根据您的情况,可能还有另一种选择: 如果您的集成测试是使用unittest模块编写的,则可以在TestCase中使用。
是否可以根据SpringAOP中的参数名称获取方法参数值。 这种方法将获得参数名,而不是值。 将返回值而不是名称 那么是否可以根据参数名获取值?