先了解一些小东西：主要是typing中的一些数据类型

- Any：是一个特殊的类型注解，表示可以是任何类型。使用 Any 类型注解的变量可以接受任何类型的值，但是这种方式会失去静态类型检查的优势，因此应该尽量避免使用。
- TypeDcit：在 Python 3.8 中，引入了 typing 模块中的 TypedDict 类型注解。TypedDict 可以被用来描述键值对的字典类型，该类型中的键需要指定名称和类型注解，而值的类型可以是任意的。
- Literal： 是一个泛型类型注解，用于表示只能取特定值中的一个的字面量类型。例如 Literal[True, False] 表示只能取 True 或 False 中的一个值。
- Union：是一个泛型类型注解，用于表示多个类型中的任意一个。可以将多个类型作为 Union 的参数传入，例如 Union[str, int] 表示可以是字符串类型或整型类型中的任意一个。
- cast： 是 Python 中的一个内置函数，用于将一个值强制转换成指定的类型。常见的用法是在类型注解中使用，
- `Optional`：是 `typing` 模块中的一个泛型类型，用于表示可选类型。它用于指示一个变量或函数参数可以是指定的类型，也可以是 `None`。
- Mapping：是一个泛型类型提示，用于描述一个键值对类型的映射。它可以被用作参数类型提示、返回值类型提示或变量类型提示。
- `Callable`：是一个泛型类型提示，用于描述一个可调用对象的类型。它可以被用作参数类型提示、返回值类型提示或变量类型提示。`Callable[[int], str]`，表示输入为int，输出为str的可调用函数。