类型注解专项测试
考察知识点
- 类型提示语法:函数参数类型、返回值类型、变量类型
- typing模块:List、Dict、Tuple、Optional、Union等
- 泛型:TypeVar、Generic、泛型类与泛型函数
- 类型检查:mypy工具、静态类型检查、类型推断
typing模块提供List、Dict、Tuple等泛型类型,用于标注包含其他类型的复合结构,如List[int]表示元素都是整数的列表,Dict[str, int]表示键为字符串、值为整数的字典。
类型别名是为复杂类型注解定义的简化名称,例如 UserInfo = Dict[str, Union[int, str]] 可以用UserInfo代替复杂的类型表达,提高代码可读性。
mypy是Python的静态类型检查工具,可以分析代码中的类型注解,在运行前发现类型不一致的错误,无需实际执行代码即可进行类型验证。
typing模块是Python标准库,提供List、Dict、Tuple、Optional、Union等类型注解工具,以及Callable、Any、TypeVar等高级类型构造器。
Python的类型注解在运行时不会强制进行类型检查,即使标注为int类型的变量赋值为str,程序也能正常运行。
Optional[int]表示该值可以是int类型或None,相当于Union[int, None]。Optional常用于标注可能返回None的函数或可选参数。
Python类型注解使用int、str、float、bool等基本类型标注变量,例如 x: int = 10 表示x是整数类型。类型注解在运行时不强制检查,仅用于静态分析和IDE提示。
Dict[str, int]类型注解表示:
函数的类型注解存储在哪个属性中?
Union[str, int, float]表示什么?
使用mypy检查Python代码类型的命令是:
Callable[[int, str], bool]表示什么类型?
函数类型注解的正确语法是:
如何定义一个表示"字符串列表"的类型别名?
变量注解格式:变量名____________类型。函数参数注解:参数名____________类型。返回值注解用____________符号。注解存储在annotations属性中。运行时不强制检查。typing.gettype_hints()解析注解为真实类型。
List[____________]表示整数列表。Dict[____________, ____________]表示键为字符串值为整数的字典。Tuple[int, str]表示固定元组。Set[int]表示整数集合。Python 3.9+可直接用list[int]代替List[int]。嵌套类型如List[List[int]]表示二维列表。
Optional[int]等价于____________[int, ____________],表示可以是____________或None。Union[str, int]表示可以是str或int。Python 3.10+可用|符号:int | None。函数返回可能为None时应使用Optional。
typing提供____________、____________、____________泛型类型。Optional[T]表示T或None。Union[A, B]表示多种类型。Any表示任意类型。Callable[[int], str]表示函数类型。TypeVar定义类型变量。Generic创建泛型类。
类型别名使用____________语句定义:Vector ____________ List[float]。别名简化____________类型,提高可读性。JSON = Dict[str, Union[str, int]]表示JSON数据。Python 3.12+可用TypeAlias声明。函数别名:Handler = Callable[[int], str]。类型别名便于统一修改类型定义。