def greeting(name: str) -> str:
return 'Hello ' + name
复杂类型typing:
from typingimport List
Vector= List[float]defscale(scalar:float, vector: Vector)-> Vector:return[scalar* numfor numin vector]from typingimport Dict, Tuple, Sequence
ConnectionOptions= Dict[str,str]
Address= Tuple[str,int]
Server= Tuple[Address, ConnectionOptions]
自定义类型:
from typingimport NewType
UserId= NewType('UserId',int)
some_id= UserId(524313)
简单的类型注解:
defadd(a:int)->int:return a+1
复杂的类型:
这个时候就要借助typing
模块List[str]
:表示由str类型组成的列表Tuple[int, int. int]
表示由int类型的元素组成的长度为3的元组
from typingimport List, Tuple, Dict
names: List[str]=['Germey','Guido']
version: Tuple[int,int,int]=(3,7,4)
operations: Dict[str,bool]={'show':False,'sort':True}
list
var: List[intorfloat]=[2,3.5]
var: List[List[int]]=[[1,2],[2,3]]
tuple
person: Tuple[str,int,float]=('Mike',22,1.75)
Dict
defsize(rect: Mapping[str,int])-> Dict[str,int]:return{'width': rect['width']+100,'height': rect['width']+100}
sequence
当我们不需要严格区分一个变量是list还是tuple的时候
defsquare(elements: Sequence[float])-> List[float]:return[x**2for xin elements]
NoReturn
当一个方法没有返回结果时:
defhello()-> NoReturn:print('hello')
TypeVar
可以借助它来自定义兼容特定类型的变量,比如int,float,None都是符合要求的。
Height= TypeVar('Height',int,float,None)defget_height()-> Height:return height
Callable
可调用类型,用来注解一个方法
defdate(year:int, month:int, day:int)->str:return f'{year}-{month}-{day}'defget_date_fn()-> Callable[[int,int,int],str]:return date