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

Python中的typing_extensions模块:TypedDict()的使用方法和示例

发布时间:2023-12-16 17:54:34

typing_extensions模块是Python的一个扩展类型注解模块,提供了一些在标准typing模块中不存在的注解类型。其中一个很有用的注解类型是TypedDictTypedDict允许我们在字典中定义键和对应的值的类型,并且可以强制要求字典中包含指定的键。

在标准的Python类型注解中,我们可以使用Dict来注释字典类型。例如,我们可以将字典中的键定义为str类型,并将对应的值定义为int类型,如下所示:

from typing import Dict

person: Dict[str, int] = {"name": "John", "age": 25}

然而,使用Dict注释类型时,我们不能强制要求字典中包含特定的键。这就是TypedDict类型的作用。

让我们来看一下TypedDict的使用方法和示例。

首先,我们需要导入TypedDict类型注解:

from typing_extensions import TypedDict

然后,我们可以使用TypedDict定义一个继承自dict的子类,并指定键和对应的值的类型。以下是TypedDict的基本语法:

class MyDict(TypedDict):
    key1: type1
    key2: type2
    ...

让我们通过一个例子来演示TypedDict的使用。

假设我们要编写一个函数,该函数接受一个学生的信息字典,并返回学生的姓名和年龄。我们可以使用TypedDict为学生信息定义类型,并在函数中使用该类型来注释参数和返回值。

from typing_extensions import TypedDict

class Student(TypedDict):
    name: str
    age: int

def get_student_details(student: Student) -> Student:
    name = student['name']
    age = student['age']
    return {'name': name, 'age': age}

student_info = {'name': 'John', 'age': 25, 'gender': 'male'}

result = get_student_details(student_info)
print(result)

在上面的例子中,我们首先使用TypedDict定义了一个名为Student的类型,该类型具有nameage两个键,并且对应的值分别为strint类型。然后,我们定义了一个get_student_details函数,该函数接受一个Student类型的参数,并返回一个Student类型的值。在函数中,我们可以通过使用student['name']student['age']来访问学生信息字典的对应字段。

在创建学生信息字典时,我们可以包含其他字段,如gender,但它们不会影响函数的类型检查。最后,我们在get_student_details函数中调用了get_student_details(student_info),并输出了返回的结果。

当我们运行上述代码时,将会得到输出结果{'name': 'John', 'age': 25}。注意,尽管student_info字典包含了额外的gender字段,但在类型检查时不会报错。

总结一下,TypedDict类型允许我们在字典中指定键和对应的值的类型,并且可以强制要求字典中包含指定的键。这对于编写更严格的类型注解和类型检查非常有用。希望这个例子可以帮助你更好地理解如何使用TypedDict