欢迎访问宙启技术站
智能推送

使用inspect模块获取函数的注解信息

发布时间:2024-01-09 14:19:41

inspect模块是Python内置的用于获取有关对象信息的模块。它提供了一系列功能,可以用于获取函数的注解信息。

函数注解是Python3中的一个新特性,它允许程序员在定义函数时提供更多的元数据信息。这些注解信息可以是参数类型、返回值类型和其他自定义的信息。使用inspect模块可以获取这些注解信息,并用于自省和元编程。

下面是一个使用inspect模块获取函数注解信息的例子:

import inspect

def greet(name: str, age: int) -> str:
    return f"Hello, {name}! You are {age} years old."

# 获取函数的参数和返回值的注解信息
signature = inspect.signature(greet)
parameters = signature.parameters
return_annotation = signature.return_annotation

print("参数注解:")
for name, parameter in parameters.items():
    print(f"{name}: {parameter.annotation}")

print("返回值注解:")
print(return_annotation)

在上面的例子中,我们定义了一个greet函数,它有两个参数name和age,以及一个返回值。我们使用函数注解来指定name的类型为str,age的类型为int,返回值的类型为str。

我们使用inspect.signature()函数获取函数的签名对象,然后通过参数annotations属性获取所有参数的注解信息。返回的是一个字典,键是参数名,值是参数的注解。我们遍历这个字典并打印出参数名和注解信息。

我们还使用signature的return_annotation属性获取了返回值的注解信息,并打印出来。

运行以上代码将输出:

参数注解:
name: <class 'str'>
age: <class 'int'>
返回值注解:
<class 'str'>

从输出结果可以看出,我们成功获取了函数的参数和返回值的注解信息。参数的注解信息是类型对象,而返回值的注解是类型对象的字符串表示。

除了获取注解信息,inspect模块还提供了其他一些功能,可以用于获取函数的源代码、获取函数的文档字符串、获取函数的默认参数值等。

总之,inspect模块是一个强大的工具,可以用于获取和操作对象的元数据信息,包括函数的注解信息。它为自省和元编程提供了很多便利,可以帮助我们编写更加灵活和智能的代码。