typing模块是 Python 提供的一个标准库,主要用于为函数、变量和类定义类型提示(Type Hints),从而提高代码的可读性和类型安全性。虽然 Python 是动态类型语言,但通过typing模块,开发者可以明
typing 模块是 Python 提供的一个标准库,主要用于为函数、变量和类定义类型提示(Type Hints),从而提高代码的可读性和类型安全性。虽然 Python 是动态类型语言,但通过 typing 模块,开发者可以明确指定变量和函数的参数、返回值的类型,帮助 IDE 或静态代码分析工具提供更好的代码提示和错误检查。虽然 Python 本身不会强制执行这些类型检查,但借助 mypy 等工具,可以进行静态类型分析,帮助发现潜在问题。 源码位置:D:\Python310\Lib\typing.py 一.常见类型提示1.List 和 Dict 用于表示列表和字典类型。 (1)List[type] 表示一个包含特定类型元素的列表。 (2)Dict[key_type, value_type] 表示键和值有特定类型的字典。 2.Tuple 表示一个包含特定类型的元组。Tuple[type1, type2] 表示一个包含两个特定类型的元组。 3.Optional 表示变量可以是某种类型,也可以是 None。Optional[type] 等价于 Union[type, None],表示某个值可以是 type 或 None。 4.Union 表示一个变量可以是多个类型之一。Union[type1, type2, ...] 表示变量可以是 type1、type2 等中的任意一种。 5.Any 表示可以是任意类型。Any 用于声明一个变量可以是任意类型,不做类型检查。 6.Callable 表示可调用的对象,如函数。Callable[[arg_type1, arg_type2], return_type] 用于表示一个函数,参数类型为 arg_type1、arg_type2,返回值类型为 return_type。 7.TypeVar 用于定义泛型。TypeVar 用于创建通用函数或类。 8.Literal 限制变量值为某些特定的值。 9.Set 表示一个包含特定类型元素的集合。比如 Set[str] 表示一个字符串集合。 10.FrozenSet 表示一个不可变的集合。比如 FrozenSet[int] 表示一个不可变的整数集合。 11.Generic 用于创建泛型类和泛型接口。比如 class MyList(Generic[T]) 表示一个泛型列表类,可以存储类型 T 的元素。 12.Type 表示一个类型对象。比如 Type[str] 表示 str 类型。 二.常见用法1.List|Dict|Tuple示例
2.Optional 示例
find_user():返回类型是 Optional[str],表示可能返回字符串,或者返回 None。 3.Union 示例
process_input():参数类型是 Union[int, str],表示该函数接收整数或字符串两种类型。 4.Callable 示例
execute_task():接收一个可调用对象(函数),该对象接收两个整数并返回一个整数。 5.TypeVar 泛型示例
TypeVar:允许定义一个泛型函数 get_first_element,它可以适用于任何类型的列表。 三.高级用法1.Literal 示例
Literal:限制传入的值必须是特定的字面值,在此例中只能是 'read' 或 'write'。 2.TypedDict示例
TypedDict:用于定义字典的具体结构,使字典的键和值类型更加明确。 3.Protocol示例 用于定义接口协议,可以检查对象是否实现了特定的方法和属性。
4.Final 示例 表示一个变量、方法或属性不能被重写或修改。
5.ClassVar 示例 表示一个类变量,它不应被视为实例变量的一部分。
6.NoReturn 表示函数不会返回任何值(通常用于函数抛出异常的情况)。
|
2019-06-18
2019-07-04
2021-05-23
2021-05-27
2021-05-27