函数接受并返回一个字符串,注释像下面这样:
def greeting(name: str) -> str: return 'Hello' + name
在函数 greeting
中,参数 name
预期是 str
类型,并且返回 str
类型。子类型允许作为参数。
1.1. 类型别名
型别名通过将类型分配给别名来定义。在这个例子中, Vector
和 List[float]
将被视为可互换的同义词:
from typing import List Vector = List[float] def scale(scalar: float, vector: Vector) -> Vector: return [scalar * num for num in vector] # typechecks; a list of floats qualifies as a Vector. new_vector = scale(2.0, [1.0, -4.2, 5.4])
类型别名可用于简化复杂类型签名。例如:
from typing import Dict, Tuple, List ConnectionOptions = Dict[str, str] Address = Tuple[str, int] Server = Tuple[Address, ConnectionOptions] def broadcast_message(message: str, servers: List[Server]) -> None: ... # The static type checker will treat the previous type signature as # being exactly equivalent to this one. def broadcast_message( message: str, servers: List[Tuple[Tuple[str, int], Dict[str, str]]]) -> None: ...
请注意,None
作为类型提示是一种特殊情况,并且由 type(None)
取代。