Typing库(类型标注)
使用typing库最常见的方法是在定义函数或变量时可以标注变量或参数的类型(类似java),下面f函数的调用就要求输入参数a和b分别是str和int
def f(a: str, b:int) -> str:
return a * b
类型别名
要定义一个类型别名,可以将一个类型赋给别名。类型别名可用于简化复杂类型签名,在下面示例中,Vector 和 list[float] 将被视为可互换的同义词:
from typing import List
Vector = List[float]
def scale(scalar: float, vector: Vector) -> Vector:
return [scalar * num for num in vector]
new_vector = scale(2.0, [1.0, -4.2, 5.4])
# 输出 [2.0, -8.4, 10.8]
NewType创建类型
NewType() 是一个辅助函数,用于向类型检查器指示不同的类型,在运行时,它返回一个函数,该函数返回其参数。
import typing
Id = typing.NewType("Id", int)
a = Id(2020)
回调(callable)
将回调函数类型标注为 Callable[[Arg1Type, Arg2Type], ReturnType]
from typing import Callable
def f(a: int) -> str:
return str(a)
def callback(a: int, func: Callable[[int], str]) -> str:
return func(a)
print(callback(1, f))