什么是类型注解:供调用者在使用函数(方法)时,如果没有完善的文档作为参考,开发者不知道要给定义的【变量、方法中的函数、】传入什么数据类型,以免减少编译错误。有了类型注解可以让 IDE 知道了数据类型后,更加准确地进行自动补全。
方法中的函数:
def func(data): return data * data func() #编译器只会提示需要传入一个实参,并不会告诉你该传入何种数据类型
如果是python的内置函数random,它就会提示你传入几个参数,出入那一种数据类型
import random random.randint() #生成一个随机数 需要传入起始值和边界值但不包括边界值
自定义函数就不会有这种特殊的待遇,因为python内置函数在封装的时候都已经注释在里面了,因此为更加精准的传入数据,减少错误,我们需要对自定义的函数和变量自己进行注释。
变量的注释方法:
语法1: 变量: 类型 注释前: funck = 10 注释后: funck:int = 10 常用注释方式
语法2: # type: 类型 注释前: funck = 10 注释后: funck = 10 # type:int 在注释中进行类型注释
函数 和 返回值 的注释语法:
函数 :def 函数名(形参:数据类型)
返回值:def 函数名(形参:数据类型) -> 数据类型
函数中类型注释:
def add(x:int,y:int): return x + y add() #提示我们传入两个参数,并且第一个参数和第二个参数都是整形 (int)
返回值注释:
语法: -> 数据类型
注释前 : 只给自定义函数的形参作了类型注解
def func (x:list[int]) """list[int] 表示给形参x,传入数据时,数据类型是一个列表,列表中的元素是 int 整形""" return x
注释后:给定义的函数形参 和返回值都做了类型注解
def func (x:list[int]) -> int: return x
使用Union进行联合类型注解 :
语法: 第一步: 导入 Union 包 from typing import union
第二步:联合注解 my_list: 整体数据类型[union[元素数据类型1,元素数据类型2....,元素数据类型n]]
使用场景: 变量中的参数,需要多种数据类型
案例释义: my_list = [1,"csdn",3.1455] #变量的列表中出现了,三种数据类型。
用以前 my_list:int:str:float = [1,"csdn",3.1455] 这样注释肯定不行
所以正确的是: my_list:list[int,str,float] = [1,"csdn",3.1455]
Union联合类型注解,在变量注解、函数(方法)形参和返回值注解中,均可使用。
函数 和 返回值中使用union 联合注解:
def add(data:Union[float,int]) -> Union[float,int]: return data
-> union[float,int] 这一段指的是返回值 return data中返回的data的数据类型中存有float,int
这里有一个 bug 关于 union 导入会出现问题
目前我通过pip命令下载 typeing 和 union 第三方库,但是问题好像没有被解决掉。
原因是因为: 第三方库 Union 中 的 U是大写的U,我写成了union 所以不能识别 typeing 中没有union 小写这个方法,有的是大写U的 Union。
有一位【CSDN】的作者也解决了在导入Union函数时报错的问题,我把作者的作品Url:
放置如下。
http://t.csdn.cn/2ij9q
总结: 【论语二则】
君子之过也,如日月之食焉。过也,人皆见之;更也,人皆仰之。
不患人之不知己,患不知人也。
不必担心别人不知道自己,时刻警惕着记好别人。
寓意儒学中蕴含做人的基本原则,谦逊谨慎坦诚