现在接触了一些类型和风格的代码之后,稍稍发现,其实以前讨厌的静态类型风格才是大势所趋,以前最喜欢的灵活的python依旧喜欢,但是作为工程代码时,也希望对接的人也利用起最新的类型标注等特性开发。

以前python编写接口时, 只能在用类型注释或者注释来告知使用的人,这套接口的入参.

现在python3.6开始可以用typing的类型标注功能了.

简单举个例子, 返回的是什么样的generator都可以定义了,利用mypy可以在IDE中编写时直接做检查了.虽然还是不能做到运行时强制检查.

1
2
3
4
5

def function(a: str, b: int) -> Generator[ptional[str, int]]:
c: list = [a, b]
for k in c:
yield k

对于愈发庞大的代码来说,静态类型声明带来的直观的类型阅读及清晰的调用逻辑,在后续维护时带来的好处非常大.

当然,即便原先没有这种类型标注,对于一套良好的动态类型代码,也是会说明清楚所有的类型的, 只是因为不像静态语言编译时会自动检查, 因为当时还没有类型标注这样的标准,开发自动检查的插件的难度也非常庞大, 这种情况下全靠开发者自觉.

对于一套大型代码, 最主要的是不能依赖开发者的个人素质, 要通过各式各样的检查工具,来提高开发者们的下限水平. 所以, 相比于依赖注释,这个只能靠认为review或不标准的检查工具的形式, 标准支持的类型标注的价值要大得多了.

再之后,对于类型检查,准备在防御式编程初探中讨论.

Reference

  1. typing — Support for type hints — Python 3.8.3 documentation
  2. Python 有必要自己写类型判断吗? - V2EX