如果你是一名Python开发者,那么今天我想问你一个问题:你在日常编程中会使用类型提示吗?你更倾向于左边的写法还是右边的写法?

对比.png

如果你的回答是“右边”,那可能是因为你认为Python作为一门动态类型语言,类型提示并不是必需的。或者,你也可能是那些已经开始享受类型提示带来的好处的一员。无论你的回答是什么,这篇文章都将带你回顾Python类型系统的重要里程碑——PEP 484,并分享最近由JetBrains、Meta和Microsoft联手进行的一项关于Python类型系统的全面调查结果。

PEP 484

先看看pep484,这个提案是2014年提出,在2015年完成的。这一提议旨在为Python引入静态类型检查的能力,通过在函数签名和其他地方添加类型注解,使代码更加清晰易读,并帮助开发工具提供更好的支持。尽管Python本身是一种动态类型语言,但PEP 484为那些寻求额外安全性和结构化的开发者提供了一个强有力的工具。

pep484.png

回到最开始的例子上,add​函数接收两个参数并返回它们的和。然而,当我们尝试将一个整数和一个字符串相加时,程序会抛出一个运行时错误。由于Python是动态类型的,这样的错误只有在实际执行时才会被发现。

def add(a, b):
    return a + b

result = add(5, "10")
print(result)  # 这里会发生什么?

引入了类型提示后,我们明确指定了add​函数的参数和返回值类型为int​。这不仅使得代码更加清晰易读,而且静态分析工具(如Mypy)可以在编译阶段就捕捉到潜在的类型错误,避免了运行时可能出现的问题。

from typing import Union

def add(a: int, b: int) -> int:
    return a + b

# result = add(5, "10")  # 静态分析工具会在这一行给出警告或错误
result = add(5, 10)
print(result)  # 输出: 15

自PEP 484发布以来,类型提示逐渐成为许多Python开发者日常工作的一部分。它不仅提高了代码的可读性和维护性,还增强了IDE的支持,帮助开发者更早地捕捉潜在错误。然而,十年过去了,类型提示的实际应用情况如何呢?

来自调查的数据

今年夏天,JetBrains、Meta和Microsoft联合发起了一项针对Python类型系统的全面调查,收集了超过1000名开发者的反馈。结果显示,有88%受访者表示他们“总是”或“经常”在Python代码中使用类型提示。这个数字远超预期,表明类型提示已经成为许多Python开发者日常编码的一部分。(我平时可能偶尔会用~)而不用的理由也很简单,大多数可能一些小脚本小项目,不需要。。

reason.png

  • 项目不需要:129人

  • 不熟悉:88人

  • 太复杂:76人

  • 类型检查工具难以使用/设置:69人

  • 同事/共同维护者的反对:53人

说到开发环境,Visual Studio Code成为了最受欢迎的选择,紧随其后的是PyCharm。这个不应该啊,pycharm那么好用,虽然我也渐渐开始用起cursor来了。

ide.png

最后,就如Mark在宣布接受PEP 484时说的:

​Python is your language, please use type-hints responsibly :)​

make Python great again

你是否会考虑在自己的Python项目中引入类型提示呢?欢迎在评论区分享你的看法和经验~

欢迎大家关注我的公众号~

Snipaste_2024-12-07_11-05-00.png