typing
模块是 Python 3.5 引入的一个标准库模块,用于支持类型注解(Type Annotations)。类型注解允许开发者在代码中显式地指定变量、函数参数、返回值等的预期类型,从而提高代码的可读性和可维护性,并帮助静态类型检查工具(如 mypy
)进行类型检查。
主要用途
- 类型注解:通过在变量、函数参数、返回值等地方添加类型注解,可以明确指定它们的预期类型。
- 静态类型检查:结合静态类型检查工具(如
mypy
),可以在代码运行之前发现潜在的类型错误。 - 提高代码可读性:类型注解可以让其他开发者更容易理解代码的意图。
常用类型注解
typing
模块提供了许多用于类型注解的工具,以下是一些常用的类型注解:
List
,Dict
,Set
,Tuple
:用于注解列表、字典、集合、元组等容器类型。Optional
:表示一个值可以是某个类型,也可以是None
。Union
:表示一个值可以是多个类型中的任意一个。Any
:表示任意类型。Callable
:用于注解函数或可调用对象。TypeVar
:用于定义泛型类型变量。Generic
:用于定义泛型类。Sequence
:用于注解序列类型(如列表、元组等)。Mapping
:用于注解映射类型(如字典)。
示例
from typing import List, Dict, Optional, Union
def greet(name: str) -> str:
return f"Hello, {name}"
def process_data(data: List[int]) -> Dict[str, int]:
return {"length": len(data), "sum": sum(data)}
def find_user(user_id: int) -> Optional[Dict[str, Union[str, int]]]:
if user_id == 1:
return {"name": "Alice", "age": 30}
else:
return None
# 使用类型注解的变量
age: int = 25
name: str = "Bob"
静态类型检查
使用 mypy
进行静态类型检查:
mypy your_script.py
如果代码中有类型不匹配的地方,mypy
会给出相应的错误提示。
总结
typing
模块为 Python 提供了强大的类型注解功能,使得开发者可以在代码中明确指定类型,从而提高代码的可读性和可维护性,并借助静态类型检查工具提前发现潜在的类型错误。