Python使用Mypy进行静态变量审查
python作为一个动态语言,可以对变量不进行类型定义就使用,这就导致随着项目的增大,我们很难回顾以前某些模块中每一个变量是什么类型(特别是在函数定义里,如果不进行类型检查,很可能对一个str类型进行了()调用等等),为了在编码时能够让编译器提醒我们,也防止在运行时出现问题,采用静态变量审查工具在我们编码时就可以更好地提醒我们(注意仅仅只是提醒,并非强制错误不让运行)。
我们这里基于Vscode的Mypy插件,进行静态代码检查(从Vscode的插件库中直接下载即可)。Mypy是基于typing这个模块进行的,从typing模块中有非常多的静态类型可以使用,比如以下例子:
from typing import List, Literal, Union, Dict, Optional # Literal类型用于限制变量的取值范围 game: Literal["checkers", "chess"] game = "checkers" # 如果为其他值将会报错 # 指定List元素中的类型等价于List[Union[int, float]] var1: List[int | float | None] = [5, 2.4] # 可选参数int或者为 None, 一切的Union都可以改为 int | None var2: Union[int, None] = None # 指定Dict的key和value类型 var3: Dict[str, int] = dict() # Optional 是指这个参数可以为空或是已经声明的类型,即 Optional[int] 等价于 Union[int, None]。 var4: Optional[int] = None # 传参参数类型指定, 返回参数指定 def func(string: str, a: int = 20) -> List[int | str]: """ :param a: 整数类型的参数 :param string: 字符串类型的参数 :return: 返回列表类型的数据,列表中的数据应该是int类型或者str类型 """ list1: List[int | str] = [] list1.append(string) list1.append(a) return list1 func("1", 2)
以上内容如有错误,恳请指正