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)

  

posted @   Circle_Wang  阅读(110)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示