python3.5中 PEP 484 非常有趣的->

97 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第1天,点击查看活动详情

众所周知,python是一门动态类型强类型的语言,这就说明了它对对象(python一切皆对象)的类型非常严格,但是由于是一门动态类型的语言又导致只有代码运行的时候才会知道数据类型是否符合数据格式,那么有没有一种方式或者习惯可以解决这一大难题呢?

答案当时有啦,python3.5中 PEP 484 - Type Hintspeps.python.org/pep-0484/)添加了一个新的特性那就是-> : 用于表示函数返回的数据类型,他会在ide中例如python中强制的校验返回参数是否符合要求,如果不符合要求就会报一个错,Expected type 'dict', got 'str' instead 如图所示

今天我们来简单的说一下,这个非常好用的新特性PEP 484 类型提示

首先我们来看看PEP 484的目标:

这个PEP标准的 旨在为类型注释提供标准语法,对于开放的 Python 代码可以更轻松的进行静态分析和重构, 并且隐式的在代码运行之前进行类型检查,同时在某些情况下利用类型提示信息生成代码。在这些目标中,最重要的就是静态分析,这不仅包括对mypy的离线类型检查器的支持,还包括提供可用于IDE的代码完成和重构的提示。

接着我们来看看他的使用方法:使用方法非常简单,只需要在对应的方法/函数后增加一个“-> ” object 即可。


def demo1(name: str) -> str:

    return 'Hello ' + name

def demo2(name: str) -> dict:

    return {'name' : name}

def demo3(name: str) -> list:

    return [name]

这里的object还可以是其它类型,如

from typing import TypeVar, Iterable, Tuple

T = TypeVar('T', int, float, complex)

Vector = Iterable[Tuple[T, T]]

def demo4(v: Vector[T]) -> T:

    return sum(x*y for x, y in v)