输入“/”快速插入内容

Python中的typing模块常见用法

2024年9月9日修改
typing 模块是 Python 提供的一个标准库,主要用于为函数、变量和类定义类型提示(Type Hints),从而提高代码的可读性和类型安全性。虽然 Python 是动态类型语言,但通过 typing 模块,开发者可以明确指定变量和函数的参数、返回值的类型,帮助 IDE 或静态代码分析工具提供更好的代码提示和错误检查。虽然 Python 本身不会强制执行这些类型检查,但借助 mypy 等工具,可以进行静态类型分析,帮助发现潜在问题。
源码位置:D:\Python310\Lib\typing.py
一.常见类型提示
1.ListDict
用于表示列表和字典类型。
(1)List[type] 表示一个包含特定类型元素的列表。
(2)Dict[key_type, value_type] 表示键和值有特定类型的字典。
2.Tuple
表示一个包含特定类型的元组。Tuple[type1, type2] 表示一个包含两个特定类型的元组。
3.Optional
表示变量可以是某种类型,也可以是 NoneOptional[type] 等价于 Union[type, None],表示某个值可以是 typeNone
4.Union
表示一个变量可以是多个类型之一。Union[type1, type2, ...] 表示变量可以是 type1type2 等中的任意一种。
5.Any
表示可以是任意类型。Any 用于声明一个变量可以是任意类型,不做类型检查。
6.Callable
表示可调用的对象,如函数。Callable[[arg_type1, arg_type2], return_type] 用于表示一个函数,参数类型为 arg_type1arg_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示例
代码块
from typing import List, Dict, Tuple
# 一个返回包含字符串的列表的函数
def get_names() -> List[str]:
return ["Alice", "Bob", "Charlie"]
# 一个带有字典类型提示的函数
def get_person_data() -> Dict[str, int]:
return {"Alice": 30, "Bob": 25}
# 一个带有元组类型提示的函数
def get_coordinates() -> Tuple[int, int]:
return (10, 20)