Python【方法和返回值(Union)联合类型】注解

什么是类型注解:供调用者在使用函数(方法)时,如果没有完善的文档作为参考,开发者不知道要给定义的【变量、方法中的函数、】传入什么数据类型,以免减少编译错误。有了类型注解可以让 IDE 知道了数据类型后,更加准确地进行自动补全。

方法中的函数:

def func(data):
    return data * data
func()  #编译器只会提示需要传入一个实参,并不会告诉你该传入何种数据类型

如果是python的内置函数random,它就会提示你传入几个参数,出入那一种数据类型 

import  random
random.randint()  #生成一个随机数 需要传入起始值和边界值但不包括边界值

Python【方法和返回值(Union)联合类型】注解_第1张图片

 

自定义函数就不会有这种特殊的待遇,因为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)

Python【方法和返回值(Union)联合类型】注解_第2张图片

返回值注释:

语法: -> 数据类型

注释前 : 只给自定义函数的形参作了类型注解

def func (x:list[int])   """list[int] 表示给形参x,传入数据时,数据类型是一个列表,列表中的元素是 int 整形"""
    return x

注释后:给定义的函数形参 和返回值都做了类型注解

def func (x:list[int])  -> int:   
    return x

Python【方法和返回值(Union)联合类型】注解_第3张图片

使用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 导入会出现问题 

Python【方法和返回值(Union)联合类型】注解_第4张图片

 目前我通过pip命令下载 typeing 和 union 第三方库,但是问题好像没有被解决掉。

Python【方法和返回值(Union)联合类型】注解_第5张图片

 原因是因为: 第三方库 Union 中 的 U是大写的U,我写成了union 所以不能识别 typeing 中没有union 小写这个方法,有的是大写U的 Union。

有一位【CSDN】的作者也解决了在导入Union函数时报错的问题,我把作者的作品Url:

放置如下。

http://t.csdn.cn/2ij9q  

总结: 【论语二则】

君子之过也,如日月之食焉。过也,人皆见之;更也,人皆仰之。

不患人之不知己,患不知人也。

不必担心别人不知道自己,时刻警惕着记好别人。

寓意儒学中蕴含做人的基本原则,谦逊谨慎坦诚

你可能感兴趣的:(python基础,python,开发语言)