Python最近在静态类型方面有了很大的发展。从Python3.5开始,类型提示就是一件事。这就是PEP 0484的全部内容。类型暗示语法完全基于前面用PEP 3107引入的函数注释语法。这使得pep0484成为一个不涉及新语法的变更,这使得它非常有吸引力,并且易于修改。在
那么,这是怎么回事?对于简单的情况,语法实际上非常直观。例如:def greeting(name: str) -> str:
return 'Hello ' + name
类型暗示系统也支持非常复杂的事情。您还可以使用用户类型、可调用项、使用联合的多个重载,甚至泛型类型。你可以在政治公众人物本身中看到很多例子。在
你也可以在最后一个PyCon上看到关于类型暗示的Guido van Rossum’s talk,它非常有趣,并且包含了很多细节。在
最后,有了这些类型提示,我们该如何处理它们?好吧,在python3.5和pep0484之前,这个伟大的库已经存在了一段时间了。实际上,现在正式引入的类型暗示语法是基于该库的,但只是形式化的。这个库名为mypy,基本上是Python的静态类型检查程序。安装后,可以使用mypy可执行文件对包含类型注释的任何Python脚本进行类型检查。在
例如,让我们把上面的函数定义放在一个文件中,并用错误的类型参数调用它:
^{pr2}$
在该文件上运行mypy,将得到以下输出:$ mypy test.py
test.py:4: error: Argument 1 to "greeting" has incompatible type "int"; expected "str"
mypy虽然在技术上是实验性的,但它是一个非常强大的工具,非常有效。如果你对这件事很感兴趣,并且会采用类型注释,那么你应该去看看。在