Python类型检查文艺复兴

2021-01-28 22:10:18

您可能听说过,TypeScript在过去几年中一直席卷Web开发领域,带来了静态类型。我相信,在Python世界中,同样的事情开始发生,在这种世界中,越来越多地使用诸如mypy,Pyre和Pyright之类的类型检查器,至少在公司使用Python编写大型系统的地方。

对于Python的最后几个发行版,各种PEP向每个发行版中添加了越来越多的类型检查功能:

Python 3.5类型提示(PEP 484)-Python语言中对类型检查类型注释的最初介绍。

Python 3.7注释的递延评估(PEP 563)-大多数类型检查注释不再需要在运行时上下文中。

新型类型:mypy_extensions中提供TypedDict-类型字典具有映射到特定值类型的特定命名键。这样的字典在JSON中无处不在。

Python 3.9需要从键入模块中导入的数据更少:标准集合中的类型提示泛型(PEP 585)-可以使用list [T],dict [K,V]等代替List [T]和Dict [K,V ]。

提议和设计最主要的新键入功能的邮件列表中的type-sig流量也逐年增加。 1个

我个人发现类型检查在处理大型Python应用程序2时非常有用。它有助于我发现在常规开发期间引入的许多小错误。当然,这些错误中的大多数都会被我为每个新功能编写的自动化测试所捕获,但是类型检查器可以一次发现一大堆错误,甚至不需要运行程序,这会减少添加新功能时的周期时间:

运行类型检查器。获取4-6个基本错误的报告。立即修复基本错误。

我感谢在大型程序上进行类型检查可以提高工作效率。我希望更多的Python用户尝试自己进行类型检查,尤其是随着Python在最新版本中获得越来越多的相关功能。成为Python开发人员真是令人兴奋的时刻!

TypedDict-Python typechecker支持,用于识别具有映射到特定值类型的特定命名键的结构化字典。

trycast —解析类似JSON的值,其形状由类型字典(TypedDicts)和其他标准Python类型提示定义。

键入信号的访问量的增加反映在逐年讨论的增加中。 2019年进行了63次讨论。 2020年,进行了113次讨论(增长了79%)。而2021年才刚刚开始。 ↩

我个人在工作的大型Django Web应用程序中使用类型检查。 ↩