Python 获取调用函数的名称和参数值
在Python开发中,有时候我们需要获取当前函数的名称以及调用该函数时传递的参数值。这在调试和日志记录等场景下非常有用。本文将介绍如何使用Python获取函数名称和参数值,并提供相应的代码示例。
获取函数名称
Python内置了一个名为inspect
的模块,可以用来获取函数的名称。inspect
模块提供了一系列有用的函数和类,用于检查活跃对象的类型、获取源代码、解析堆栈跟踪等。
通过使用inspect
模块中的currentframe
函数,我们可以获取当前执行的帧(frame),然后通过该帧获取当前函数的名称。
import inspect
def get_function_name():
frame = inspect.currentframe()
return frame.f_back.f_code.co_name
print(get_function_name()) # 输出:get_function_name
以上代码中,get_function_name
函数中的f_back.f_code.co_name
可以获取到当前函数的名称。
获取参数值
要获取函数调用时传递的参数值,我们可以使用inspect
模块的signature
函数和bind
方法。signature
函数可以获取函数的参数签名,bind
方法可以将实际参数绑定到指定的函数参数上。
下面是一个例子,演示了如何获取函数调用时传递的参数值。
import inspect
def add(a, b):
frame = inspect.currentframe()
args, _, _, values = inspect.getargvalues(frame)
for arg in args:
print(f"{arg} = {values[arg]}")
add(1, 2)
输出结果为:
a = 1
b = 2
以上代码中,我们通过inspect.getargvalues(frame)
获取到了当前函数的参数名称和参数值。然后我们遍历参数名称,根据参数名称获取对应的参数值。
结合使用获取函数名称和参数值
将获取函数名称和参数值结合起来,可以编写一个通用的函数,用于获取当前函数的名称和参数值,并将其打印出来。
import inspect
def get_function_info():
frame = inspect.currentframe()
function_name = frame.f_back.f_code.co_name
args, _, _, values = inspect.getargvalues(frame.f_back)
print(f"Function Name: {function_name}")
print("Parameters:")
for arg in args:
print(f"{arg} = {values[arg]}")
def example_function(a, b):
get_function_info()
example_function(1, 2)
运行以上代码,输出结果为:
Function Name: example_function
Parameters:
a = 1
b = 2
以上代码中,我们定义了一个名为get_function_info
的函数,用于获取当前函数的名称和参数值。然后我们在一个示例函数example_function
中调用了get_function_info
函数,以演示获取函数名称和参数值的用法。
总结
本文介绍了如何使用Python获取函数名称和参数值。通过使用inspect
模块的相关函数和方法,我们可以轻松地获取当前函数的名称和调用时传递的参数值。这在调试和日志记录等场景下非常有用。
希望本文对你理解如何获取函数名称和参数值有所帮助!