变量类型注解
类型注解:在代码中涉及数据交互的地方,提供数据类型的注解(显示的说明)
主要功能:
- 帮助第三方IDE工具对代码进行类型推断,协助做代码提示
- 帮助开发者自身对变量进行类型注释
支持:
- 变量的类型注解
- 函数(方法)形参列表和返回值的类型注解
为变量设置类型注解语法:
- 变量:类型
注意:
- 元组类型设置类型详细注解,需要将每一个元素都标记出来
- 字典类型设置类型详细注解,需要2个类型,第一个是key的类型,第二个是value的类型
除了使用 变量:类型,这种语法注解外,也可以在注释中进行类型注解
- 语法:# type: 类型
显示的变量定义,一般地需注解,无法直接看出变量类型之时一般会添加变量的类型注解
类型注解的限制:
- 并不会真正的对类型做验证和判断
- 类型注解仅仅是提示性的,不是决定性的
# 基础数据类型注解
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]
my_tuple: tuple = (1, 2, 3)
my_set: set = {1, 2, 3}
my_dict: dict = {"itherma": 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}
class Student:
pass
def func():
return 10
import random, json
var1 = random.randint(1, 10) # type: int
var2 = json.loads('{"it": 666}') # type: dict[str, int]
var3 = func() # type: int
函数(方法)的类型注解
形参注解
def func(data):
data.append|
func()
如上述函数所示:在定义函数(方法)的时候,没有给形参进行注解
- 在编写函数(方法),使用形参data的时候,工具没有任何提示
- 在调用函数(方法),传入参数的时候,工具无法提示参数类型
函数和方法的形参类型注解语法:
def 函数方法名(形参名: 类型, 形参名: 类型,......):
pass
# 对形参进行类型注解
def add(x: int, y: int):
return x + y
print(add(3, 3))
def func(data: list):
pass
func([1, 2])
6
返回值注解
同时,函数(方法)的返回值也是可以添加类型注解的
语法如下:
def 函数方法名(形参: 类型,......, 形参: 类型) -> 返回值类型:
pass
# 返回值注解
def func(data: list) -> list:
return data
func([1, 2])
[1, 2]
Union类型
对于混合类型的数据类型,可以定义联合类型注释
使用 Union[类型,......,类型]
Union 联合类型注解,在变量注解、函数(方法)形参和返回值注解中,均可使用
from typing import Union
my_list: list[Union[str, int]] = [1, 2, "itheima", "itcast"]
my_dict: dict[str, Union[str, int]] = {"name": "堂", "age": 18}
def func(data: Union[str, int, list]) -> Union[int, str, list]:
return data
func([1, 2])
func("tang")
'tang'