类型注解
- 类型注解(Type Annotations)在Python 3.5及更高版本中被引入。类型注解允许你为函数的参数和返回值指定预期的数据类型。这些注解不会对Python代码的运行时行为产生直接影响,也就是说,它们不会导致代码在运行时进行类型检查或强制类型转换。它们主要是用于代码文档目的,使得代码更容易理解和维护,同时也便于类型检查工具和IDEs进行静态分析,以发现潜在的类型错误。
- Python的类型注解语法遵循几个基本规则,使得代码能够包含关于变量、函数参数和返回值类型的元数据。这里是一些基本的规则和示例:
- 变量类型注解(包括函数形参),对于变量,类型注解紧跟在变量名后面,使用冒号分隔,并指定类型
a: int = 5
- 函数返回值类型注解,对于函数返回值,类型注解位于函数声明的末尾,前面使用->符号,然后是返回值的类型。如果函数没有返回值(或者说返回None),可以使用-> None:
def add(x: int, y: int) -> int:
- 容器和复杂类型,对于列表、字典、元组等容器或复杂类型,可以使用typing模块中定义的泛型类(如List、Dict、Tuple等)来指定容器中元素的类型:
- 可选类型和并集类型,对于可能为None或其他类型的变量,可以使用Optional类型。对于可以是多个类型之一的变量,可以使用Union类型:
- 类型别名,对于复杂的类型注解,可以使用类型别名简化代码:
from typing import List, Dict, Tuplenames: List[str] = ["Alice", "Bob", "Charlie"]
scores: Dict[str, int] = {"math": 90, "science": 95}
coordinate: Tuple[int, int, int] = (10, 20, 30)
from typing import Optional, Unionmaybe_number: Optional[int] = None
number_or_string: Union[int, str] = 5
from typing import Dict, ListScores = Dict[str, int]
ClassScores = Dict[str, Scores]class_scores: ClassScores = {"class1": {"Alice": 95, "Bob": 85}}