Python 类型提示入门
学习如何使用类型提示(Type Hints)提高代码可读性和可维护性,支持静态类型检查。 · 难度:入门 · +15XP
什么是类型提示?
Python 3.5+ 引入了类型提示(Type Hints),允许你在函数参数、返回值和变量上标注期望的类型。类型提示不会影响运行时行为,但可以帮助开发者理解代码意图,并通过工具(如 mypy、Pyright)进行静态类型检查,提前发现潜在错误。
基本语法
def greet(name: str) -> str:
return f"你好,{name}"
age: int = 25
height: float = 1.75
is_student: bool = True
常见类型与组合
| 类型 | 示例 | 说明 |
|---|---|---|
| int, float, str, bool | def add(a: int, b: int) -> int | 基本类型 |
| List, Dict, Tuple, Set | from typing import Listdef process(items: List[int]) -> None | 容器类型,需要从 typing 导入 |
| Optional | from typing import Optionaldef find(user_id: int) -> Optional[str] | 表示值可能为 None |
| Union | from typing import Uniondef parse(data: Union[str, bytes]) -> dict | 多个类型中的任意一个 |
| Any | from typing import Anydef log(msg: Any) -> None | 任意类型(放弃检查) |
函数注解进阶
from typing import List, Optional
def get_first_item(items: List[int]) -> Optional[int]:
if items:
return items[0]
return None
# 类型别名
def Vector = List[float]
def scale(vec: Vector, factor: float) -> Vector:
return [x * factor for x in vec]
类型检查工具
安装 mypy:pip install mypy,然后运行 mypy your_script.py。如果代码中存在类型冲突,mypy 会报告错误。
练习提示
修改下方代码,为函数 calculate_average 添加正确的类型提示:参数 numbers 应该是 List[float],返回值应为 float。同时为变量 result 添加类型注解。
最佳实践
- 在公共 API 和大型项目中尽量使用类型提示
- 避免过度使用
Any,它会削弱类型检查的价值 - 使用
Optional[X]而不是Union[X, None]更简洁 - 从 Python 3.9 开始,可以直接使用
list[int]代替List[int](但旧版本仍需 typing)