1.为什么需要类型注解
在PyCharm中编写代码,我们经常能够见到如下提示:
自动提示可用方法。
那么,Pycharm为什么知道这个对象有append方法呢?
因为:Pycharm确定这个对象,是list类型
,所以它可以自动提示和补全。
同样,我们换一份代码:
定义一个函数func,接收一个参数data你会发现,PyCharm不会在做出任何提示了
- 为什么内置模块random的方法可以提示类型 自己定义的就不可以?
因为PyCharm无法通过代码确定应传入什么类型我们需要使用类型注解
2.类型注解的语法
2.1为变量设置类型注解
基础语法:变量:类型
- 基础数据类型注解
var_1: int = 10
var_2: float = 3.1415926var_3: bool = True
var_4: str = "hello"
- 类对象类型注解
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 = { "yes" : 666}
my_str: str = "yes"
- 容器类型详细注解
my_list: list[jnt] =[1,2,3]
my_tuple: tuple[str,int,boo1] = ("yes",666,True)
my_set: set[int] = {1,2,3}
my_dict: dict[str,int] = { "yes" : 666}
注意:
- 元组类型设置类型详细注解,需要将每一个元素都标记出来
- 字典类型设置类型详细注解,需要2个类型,第一个是key,第二个是value
除了使用变量:类型,这种语法做注解外,也可以在注释中
进行类型注解。语法:
# type:类型
在注释中进行类型注解
class student:
pass
var_1= random.randint(1,10)# type: int
var_2= json.loads(data)
# type: dict[str, int]
var_3 = func(
# type: student
一般,一眼能看出来的类型无需注解,无法看出来的变量类型会添加变量的类型注解。实际上是给别人看的。
简而言之:类似于注释,类型写错了程序也不会报错,也不会有影响,但可以让不了解的人误解
3.掌握使用Union进行联合类型注解
Union类型
- 数据一种类型
my_list: list[int] = [1,2,3]
my_dict: dict[str,int] = { "age" : 11,"num" : 3}
- 数据多种类型
my_list = [1,2,"itcast", "itheima"]
my_dict ={ "name" : "小周","age" : 31}
- 使用union类型
from typing import union
my_list: list[union[str,int]] = [1,2,"itheima", "itcast"]
my_dict: dict[str,union[str,int]] = { "name":"小周","age " : 31}
使用Union[类型,…,类型]
可以定义联合半型注解