Python类型注解(十)
【摘要】 一.为什么需要类型注解在代码中提供数据类型的注解(显式的说明),使用时能获得相关提示帮助第三方IDE工具(如PyCharm)对代码进行类型推断,协助做代码提示显示声明时,pycharm确定这个对象是list类型,使用时能有对应提示没有声明具体类型时,使用不会有任何相关提示帮助开发者自身对变量进行类型注释(备注),后面调用不易出错 二.变量的类型注解提示变量的数据类型 (1) 语法格式变量名...
一.为什么需要类型注解
在代码中提供数据类型的注解(显式的说明),使用时能获得相关提示
帮助第三方IDE工具(如PyCharm)对代码进行类型推断,协助做代码提示

显示声明时,pycharm确定这个对象是list类型,使用时能有对应提示

没有声明具体类型时,使用不会有任何相关提示

帮助开发者自身对变量进行类型注释(备注),后面调用不易出错
二.变量的类型注解
提示变量的数据类型
(1) 语法格式
变量名: 数据类型 = 数值
- 注:
- Python中类型注解仅仅起到提示作用,没有其他语言那么严格
- Python解释器不会根据类型注解对数值做验证和判断,无法对应上也不会导致错误
(2) 基础类型
- 整数类型注解
var_1: int = 1314
- 浮点数类型注解
var_2: float = 5.21
- 布尔类型注解
var_3: bool = True
- 字符串类型注解
var_4: str = "hhybd"
(3) 类对象
# 定义学生类
class Student:
pass
stu: Student = Student() # 学生类类型注解
(4) 数据容器
列表类型注解
- 方式一:
my_list: list = [1, 2, 3]- 方式二,
list[基础类型]:
my_list: list[int] = [1, 2, 3]元组类型注解
- 方式一:
my_tuple: tuple = (1, 2, 3)- 方式二,元组类型需要将每一个元素都标记出来:
my_tuple: tuple[str, int, bool] = ("bd", 521, True)集合类型注解
- 方式一:
my_set: set = {1, 2, 3}- 方式二,
set[基础类型]:
my_set: set[int] = {1, 2, 3}字典类型注解
- 方式一:
my_dict: dict = {"hhbdy": 250}- 方式二,
dict[键类型,值类型]:
my_dict: dict[str, int] = {"hhbdy": 250}字符串类型注解
my_str: str = "hhybd"
(5) 其他语法格式
- 在注释中进行类型注解
- 语法格式:
# type:类型
- 使用示例:
stu = Student() # type:Student
var_1 = 123 # type:int
my_list = [1, 2, 3] # type:list
my_set = {1, 2, 3} # type:set[int]
三.函数(方法)的类型注解
标注形参和返回值数据类型
- 类型注解仅仅起到提示作用
(1) 形参注解

- 语法格式:
def 函数方法名(形参名1:类型,形参名2:类型):
函数体
- 使用示例:

(2) 返回值注解
- 语法格式:
def 函数方法名(形参名1:类型,形参名2:类型) -> 返回值类型:
函数体
- 使用示例:
def add(x: int, y: int) -> int:
return x + y
四.Union类型
联合类型注解,在变量注解、函数(方法)形参和返回值注解中均可使用
需要导包使用
当数据类型不唯一时基本格式无法满足要求,此时便可使用Union类型
使用示例,
Union[类型,类型]:- 在变量中:
from typing import Union # 数据为字符串和整数 my_list: list[Union[str, int]] = [2, "hhy", 5, "bd", 0] # 键为字符串,值为字符串和整数 my_dict: dict[str, Union[str, int]] = {"name": "hhy", "QS": 250}- 在函数中:
from typing import Union # 接收字符串或整数,返回字符串或整数 def func(data: Union[int, str]) -> Union[int, str]: pass
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者





评论(0)