🍖typing 模块

引入

参考官方文档 typing3.5 版本的新功能, Python 运行时不强制执行函数和变量类型注解, 但咱们写完代码一段时间后再回来看咱们的代码, 可能就忘记了本身所写的函数须要传什么参数、返回什么类型的结果, 又得去阅读代码, 这样就大大下降了开发的效率, 而 typing 模块的出现就很好的解决了这个问题html

一. typing 的做用

  • 类型检查,防止运行时出现参数和返回值类型不符合
  • 做为开发文档附加说明,方便使用者调用时传入和返回参数类型
  • 该模块加入后并不会影响程序的运行,不会报正式的错误,只有提醒

二. typing 经常使用的类型

  • int, long, float : 整型, 长整形, 浮点型
  • bool, str : 布尔型, 字符串类型
  • List, Tuple, Dict, Set : 列表, 元组, 字典, 集合
  • Iterable, Iterator : 可迭代类型, 迭代器类型
  • Generator :生成器类型

三. typing 模块的经常使用方式

1.简单的使用方式

def add(name:str,age:int=22)->str:
    return f"名字:{name} 年龄:{age}"

print(add("派大星"))  # 名字:派大星 年龄:22

2.类型检查说明

  • 在传入参数时经过 [参数名] : [类型] 的形式声明参数的类型
  • 返回结果经过 ->[结果类型] 的形式声明结果的类型
  • 在调用的时候若是参数的类型不正确pycharm会有提醒,但不会影响程序的运行
  • 对于如 list ,tuple...等,还能够规定得更加具体一些,如:-> List[str], 规定返回的是列表,而且元素是字符串

3.比较复杂一点点的使用方式

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

1.简单类型别名示例

from typing import List

Li = List[str]  # 这里 Li 和 List[str] 的意义是相同的
def add(name:str,age:int)->Li:
    return [name]

print(add("shawn",22))  # ['shawn'] (列表类型只支持一个元素, 否则报错)

2.复杂的类型别名示例

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函数

相关文章
相关标签/搜索