Python使用Mypy进行静态变量审查
python作为一个动态语言,可以对变量不进行类型定义就使用,这就导致随着项目的增大,我们很难回顾以前某些模块中每一个变量是什么类型(特别是在函数定义里,如果不进行类型检查,很可能对一个str类型进行了()调用等等),为了在编码时能够让编译器提醒我们,也防止在运行时出现问题,采用静态变量审查工具在我们编码时就可以更好地提醒我们(注意仅仅只是提醒,并非强制错误不让运行)。
我们这里基于Vscode的Mypy插件,进行静态代码检查(从Vscode的插件库中直接下载即可)。Mypy是基于typing这个模块进行的,从typing模块中有非常多的静态类型可以使用,比如以下例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | 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 ) |
以上内容如有错误,恳请指正
分类:
Python操作
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南