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

Python中的typing_extensions模块:深入理解TypedDict()

发布时间:2023-12-16 17:52:23

typing_extensions模块是Python的一个类型提示扩展模块,它提供了一些在标准typing模块中没有的额外功能。其中一个重要的功能是TypedDict类,它允许我们定义一个字典类型,并在字典的键值对上指定类型。

下面让我们深入了解TypedDict类,并提供一些使用例子。

1. 导入模块

首先,我们需要导入typing_extensions模块中的TypedDict类。可以使用以下语句完成导入:

from typing_extensions import TypedDict

2. 定义TypedDict子类

接下来,我们可以定义一个TypedDict的子类,并在子类中指定键值对的类型。例如,我们定义一个Person类型的字典,键为name和age,分别对应str和int类型:

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

3. 创建TypedDict对象

现在我们可以创建一个Person类型的字典对象,确保键值对的类型符合我们在TypedDict子类中定义的类型:

person: Person = {"name": "John", "age": 30}

4. 使用TypedDict对象

一旦我们创建了TypedDict对象,我们可以像使用其他字典一样访问和修改其键值对:

print(person["name"])  # 输出: John
person["age"] = 35
print(person["age"])  # 输出: 35

5. 类型检查

类型提示的一个重要功能是在编写代码时进行类型检查。当我们尝试在TypedDict对象中使用错误的类型时,将会得到类型错误的提示:

person["name"] = 10  # 类型错误: 期望值为str,但实际为int

6. 缺失键值对

如果我们尝试在TypedDict对象中缺失一个键值对,将会得到一个类型错误提示,除非在子类中通过可选键值对标记来定义它:

class Person(TypedDict, total=False):
    name: str
    age: int

person: Person = {"name": "John"}  # 类型错误: 缺少age键值对

7. 可选键值对

我们可以使用typing模块中的Optional类型来定义TypedDict子类中的可选键值对。例如,让我们定义一个Car类型的字典,其中键为make和model,make为必需值,而model为可选值:

from typing import Optional

class Car(TypedDict):
    make: str
    model: Optional[str]

car1: Car = {"make": "Toyota", "model": "Camry"}  # model键值对为可选
car2: Car = {"make": "Tesla"}  # model键值对可以省略

以上就是对Python typing_extensions模块中TypedDict类的深入理解和使用例子。TypedDict提供了一种在字典中指定键值对类型的方式,对于在使用字典时需要明确类型的场景非常有用。希望这篇文章能够帮助你更好地理解和应用TypedDict。