一.为什么需要类型注解?
1.类型注解的简介
python在3.5版本的时候引入了类型注解,以方便静态类型检查工具,IDE等第三方工具。
类型注解是在代码中涉及数据交互的地方,提供数据类型的注解(显示的说明)。
2.类型注解的主要功能
·帮助第三方IDE工具(如pycharm)对代码进行类型推断,协助做代码提示
·帮助开发者自身对变量进行类型注解
二.变量的类型注解
1.写法一
基础语法: 变量:类型
基础数据类型注解示例:
var_1:int = 10
var_2: flout = 3.1415926
var_3: bool = Ture
var_4: str = "itheima"
类对象类型注解示例:
class Student:
pass
stu: Student = Student()
基础容器类型注解:
my_list: list = [1,2,3]
my_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)
my_set: set[int] = {1,2,3}
my_dict: dict[str,int] = {"itheima":666}
注意:
·元组类型设置类型详细注解,需要将每一个元素都标记出来
·字典类型设置类型详细注解,需要2个类型,第一个是key第二个是value
2.写法二
基础语法:#type:类型
在注释中进行类型注解:
class Student:
pass
var_1 = random.randint(1,10) #type: int
var_2 = json.loads(date) #type: dict[str,int]
var_3 = func() #type: Student
3.什么时候需要使用类型注解呢?
类型注释主要功能在于:
·帮助第三方IDE工具(如pycharm)对代码进行类型判断,协助做代码提示
·帮助开发者自身对变量进行类型注释(备注)
不会真正的对类型做验证和判断,也就是,类型注解仅仅是提示性的,不是决定性的。
var_1: int = "itheima"
var_2: str = 123
上面这两个代码并不会报错。
三.函数(方法)的类型注解
1.函数(方法)形参进行类型注解
基础语法:
def 函数方法名(形参名:类型,形参名:类型,......):
pass
def add(x: int,y: int):
return x + y
def func(date: list):
pass
2.函数(方法)返回值进行类型注解
基本语法:
def 函数方法名(形参:类型,......,形参:类型) -> 返回值类型:
pass
def func(date: list) -> list:
return date
def add(x: int, y: int) -> int:
return x + y
def func(date: list[int]) -> list[int]:
pass
四.Union类型
1.基本概念
union类型用于拓展变量的可接收类型范围。比如:一个变量可以同时接收 int 或 str 类型的值。这有助于在需要处理多种数据类型时提供清晰的类型提示。
2.使用方法
基本语法:Union[ int , float ] 这里是接收int或float类型。
from typing import Union
my_list: list[Union[str,int]] = [1,2,"itheima","itcast"]
my_dict: dict[str,Union[str,int]] = {"name": "周杰伦","age": 31}