仗剑红尘已是癫,有酒平步上青天
—— 24.4.7
一、变量的类型注解
学习目标
1.理解为什么使用类型注解
2.掌握变量的类型注解语法
为什么使用类型注解
tip:CTRL+P,可以提示函数中传入的参数
当我们需要使用pycharm的自动补全功能,又或者说我们在调用方法函数的时候,对参数的类型进行提示,当我们需要使用这些功能时,我们都需要使用类型注解才能完成
类型注解
Python在3.5版本的时候引入了类型注解,以方便静态类型检查工具,IDE等第三方工具。类型注解:在代码中涉及数据交互的地方,提供数据类型的注解(显式的说明)。
主要功能:
帮助第三方IDE工具(如PyCharm)对代码进行类型推断,协助做代码提示
帮助开发者自身对变量进行类型注释
支持:
变量的类型注解
函数(方法)形参列表和返回值的类型注解类型注解的语法
基础语法:变量:类型
基础数据类型注解
var1: int = 10
var2: float = 3.1415926
var3: bool = True
var4: str = "itheima"
类对象类型注解
class Student:
pass
stu:Student = Student()
基础容器类型注解
my_list: list = [1,2,3]
mt_tuple: tuple = (1,2,3)
my_set: set = {1,2,3}
my_dict: dict = {"itheima":666}
my_str: str = "itheima"
容器类型详细注解
my_list: list[int] = [1,2,3]
my_tuple: tuple[str,int,bool] = ("itheima",666,True)
mt_set: set[int] = {1,2,3}
my_dict: dict[str,int] = {"itheima":666}
注意:
元组类型设置类型详细注释,需要将每一个元素都标记出来
字典类型设置类型详细注解,需要两个类型,第一个是key,第二个是value
冒号左边是变量,右边是对该变量类型的解释
除了使用 变量:类型,这种语法做注解外,也可以在注释中进行类型注解
语法:
#type:类型
在注释中进行类型注解:
一般无需注解,在无法直接看出变量类型之时会添加变量的类型注解
''' 演示变量的类型注解 ''' import json import random# 基础数据类型注解 var_1: int = 10 var_2: str = "一切都会好的" var_3: bool = True# 类对象类型注解 class Student:pass stu: Student = Student()# 基础容器类型注解 my_list: list = [1,2,3] my_tuple: tuple = (1,2,3) my_dict: dict = {"age":18}# 容器类型详细注解 my_list: list[int] = [1,2,3] my_tuple: tuple[int,str,str,bool] = (1,"一切都会好的","我一直相信",True) my_dict: dict[str:int] = {"age":18}# 在注释中进行类型注解 class Student:passvar_1 = random.randint(1,10) # type: int var_2 = json.load('{"name":"zhangsan"}') # type: dict[str,str] def func():pass var_3 = func() # type:int # 类型注解的限制
类型注解的限制
帮助第三方IDE工具对代码进行类型推断,协助做代码提示
帮助开发者自身对变量进行类型注释(备注)
并不会真正对类型做验证和判断
也就是说,类型注解仅仅是提示性的,不是决定性的
总结
1.什么是类型注解,有什么作用?
在代码中涉及数据交互之时,对数据类型进行显示的说明,可以帮助:
Pycharm等开发工具对代码做类型判断协助做代码提示
开发者自身做类型的备注
2.类型注解支持:
变量的类型注解
函数(方法)的形参和返回值的类型注解
3.变量的类型注解语法:
语法1:变量:类型
语法2:在注释中,#type: 类型
4.注意事项
类型注解只是提示性的,不是决定性的,数据类型和注解类型无法对应也不会导致错误
二、函数(方法)的类型注解
学习目标
1.掌握为函数(方法)形参进行类型注解
2.掌握为函数(方法)返回值进行类型注解
函数(方法)的类型注解 - 形参注解
函数和方法的形参类型注解语法:
def 函数方法名(形参名:类型,形参名:类型,……):
pass
def add(x: int,y: int):return x + ydef func(data:list):pass
函数(方法)的类型注解 - 返回值注解
同时,函数(方法)的返回值也是可以添加类型注解的
语法如下:
def 函数方法名(形参:类型,……,形参:类型) -> 返回值类型:
pass# 对返回值进行类型注解 def func(data: list) -> list:return data
总结
1.函数(方法)可以为哪里添加注解?
形参的类型注解
返回值的类型注解
2.函数(方法)的类型注解语法?
def 函数方法名(形参:类型,……,形参:类型) -> 返回值类型:
pass注意:返回值类型注解的符号使用: ->
三、Union类型
学习目标
1.理解Union类型
2.掌握使用Union进行联合类型注解
Union类型
使用Union[类型,……,类型]
可以定义联合类型注解
Union联合类型注解,在变量注解、函数(方法)形参和返回值注解中,均可使用
''' 演示Union联合类型注解 '''# 使用Union类型,必须先导包 from typing import Unionmy_list: list[Union[int,str]] = [1,2,"一切会好的","我一直相信"]def func(data: Union[int,str]) -> Union[int,str]:passfunc()
总结
1.什么是Union类型?
使用Union可以定义联合类型注解
2.Union的使用方式
导包:from typing import Union
使用:Union[类型,……,类型]