Typings是什么
Python 从版本3.5开始支持了typing,也就是类型提示(type hints),算是为开发者解决了一个很头疼的问题。"类型提示",顾名思义就是为开发者提示参数或者返回值的类型。小伙伴们看一下下面的代码:
def calculate_distance(a: Point, b: Point) -> float:
# 实现过程省略
这个函数非常易懂,它计算两个点之间的距离,返回值类型为float, 而两个参数类型为Point类型。
常见误区
有的小伙伴会误将这个类型提示跟类型检查混为一谈,需要注意的是:虽然Python加入了type hints,但是Python依然是一门动态语言,从根本上跟C++, JAVA这样的强类型静态语言不同,这也注定了Python不可能在运行时做类型检查。理论上讲,Python也能够做运行时类型检查,但是这个代价也太高了,会讲本来就运行慢的毛病让人更加诟病不已。type hints的目的是为了在开发期间,而不是运行期间,提供给开发者检查类型的能力,这个类型的检查主要靠工具例如各种linter,各种IDE以及IDE的插件,例如VS Code, PyCharm等等都对type hints类型提示有良好的支持。
常见用法和例子(来自mypy文档)
变量的类型
# This is how you declare the type of a variable
age: int = 1
# You don't need to initialize a variable to annotate it
a: int # Ok (no value at runtime until assigned)
# Doing so can be useful in conditional branches
child: bool
if age < 18:
child = True
else:
child = False
简单类型的变量,例如int, str, bool, float等等,类型提示的写法如上所示。
内建类型
x: int = 1
x: float = 1.0
x: bool = True
x: str = "test"
x: bytes = b"test