python是动态语言,不用声明类型
# 不使用类型提示 def func(a,b): return a+b func('1','1') # '11' func(1,1) # 2 func('1',1) # 未使用类型提示,代码编辑时不会报错,代码执行时会报错 # 使用类型提示 from typing import overload @overload def func(a: int, b: int): pass @overload def func(a: str, b: str): pass def func(a, b): return a + b func(1, '1') # 使用类型提示,在代码编辑时就会报错,可以在代码执行前预防可能出现的问题
提示类型并不是可用类型,如typing.List并不是list的子类,typing.List只是一个type hint,对a参数指定一个type hint,这个type hint会被设置为func方法a入参的type hint属性,执行代码不会其任何作用,但是执行代码过程中可以获取到这个type hint属性,并使用它做一些处理
T = TypeVar('T')
)List=NewType('List', list)``Person=NewType('Person', int, int)
每个实际类型都可以声明一个对应的泛型,可以使用实际了类型做type hint,所以很多时候都是直接用实际类型做typehint