参考官方文档 typing 是 3.5 版本的新功能, Python 运行时不强制执行函数和变量类型注解, 但咱们写完代码一段时间后再回来看咱们的代码, 可能就忘记了本身所写的函数须要传什么参数、返回什么类型的结果, 又得去阅读代码, 这样就大大下降了开发的效率, 而 typing 模块的出现就很好的解决了这个问题html
def add(name:str,age:int=22)->str: return f"名字:{name} 年龄:{age}" print(add("派大星")) # 名字:派大星 年龄:22
[参数名] : [类型]
的形式声明参数的类型->[结果类型]
的形式声明结果的类型-> List[str]
, 规定返回的是列表,而且元素是字符串from typing import List,Tuple,Dict def add(name:str,age:int,height:float,sex:bool=True)->Tuple[List,Tuple,Dict,bool]: list1 = [name,age,height,sex] tuple1 = [1,2,3,4] dic1 = {"name":name,"age":age} return list1,tuple1,dic1,sex print(add("派大星",22,1.72,True)) # (['派大星', 22, 1.72, True], [1, 2, 3, 4], {'name': '派大星', 'age': 22}, True)
把类型赋给别名,就能够定义类型别名, 类型别名适用于简化复杂的类型签名python
from typing import List Li = List[str] # 这里 Li 和 List[str] 的意义是相同的 def add(name:str,age:int)->Li: return [name] print(add("shawn",22)) # ['shawn'] (列表类型只支持一个元素, 否则报错)
from typing import List,Tuple,Dict People = Tuple[str,int] Other = Dict[str,int] Info = Tuple[People,Other] def add(name:str,info:Info)->None: # 这种写法等同于下面的写法 ... def add2(name:str,info:Tuple[Tuple[str,int],Dict[str,int]])->None: ...
官方文档 : https://docs.python.org/zh-cn/3/library/typing.html#module-typing函数