python基础语法学习: 类型注解

类型注解

什么是类型注解

在代码中涉及数据交互之时, 对数据类型进行显示的说明, 可以帮助:

  • PycCharm 等开发工具对代码做类型推断协助做代码提示
  • 开发者自身做类型的备注

类型注解支持:

变量的类型注解

函数(方法) 的形参和返回值的类型注解

类型注解只是提示性的, 并非决定性的, 数据类型和注解类型无法对应也不会导致错误

为变量设置类型注解

基础语法:

python 复制代码
变量: 类型

var_1: int = 10
var_2: float = 2.32
var_3: bool: True 
var_4: str = "hello world"

类对象类型注解

python 复制代码
class Student: 
    pass

stu: Student = Student()

基础容器类型注解

python 复制代码
my_list: list = (1, 2, 3)

print(my_list)
print(type(my_list)) # <class 'tuple'> 

my_set: set = {1, 2, 3}
my_dict: dict = {"hello": "world"}

类型注解只是给人 / IDE 看的提示,不会强制转换数据。

容器类型详细注解

python 复制代码
# 容器类型详细注解
my_list: list[int] = [1, 2, 3]
my_tuple: tuple[str, int, bool] = ("hello", 666, True)
my_tuple1: tuple[int, ...] = (666, 43)
my_set: set[int] = {1, 2, 3}
my_dict: dict[int, int] = {1: 3, 32: 8}

注意: 元组类型设置类型详细注解, 需要将每一个元素都标记出来

字典类型设置类型详细注解, 需要两个类型, 第一个是 key, 第二个是value

函数(方法) 的类型注解

形参注解

函数和方法的形参类型注解语法:

python 复制代码
def 函数方法名: (形参名: 类型, 形参名: 类型, ......): 
    pass

例如:

python 复制代码
def add(x: int, y: int):
    return x + y

def func(data: list): 
    pass 

有了类型注解之后, 在调用的时候就可以帮助我们提示参数的类型

返回值注解

函数(方法) 的返回值也是可以添加类型注解的

语法:

python 复制代码
def 函数方法名(形参: 类型, ......, 形参: 类型) -> 返回值类型: 
    pass

例如:

python 复制代码
def func(data: list) -> list: 
    return data

在注释中进行类型注解

除了使用 变量: 类型, 这种语法外, 也可以在注释中进行类型注解

语法:

python 复制代码
#type 类型
python 复制代码
class Student: 
    pass


var_1 = random.randint(1, 10) # type: int 
var_2 = json.loads(data) # type: dict[str, int] 
var_3 = Student()  # type: Student

Union类型

python 复制代码
my_list = [1, 2, "hello", "xinyan"] 
my_dict = {"name": 'xinyan', "age": 18} 

当我们遇到上面这中代码,要进行类型注解, 就不太好描述

这时候就需要用到 Union 类型了

使用Union类型首先要导入对应的包:

python 复制代码
form typing import Union 
python 复制代码
from typing import Union
my_list: list[Union[str, int]] = [1, 2, "hello", "xinyan"] 
my_dict: dict[str, Union[str, int]] = {"name": 'xinyan', "age": 18}

Union 联合类型注解, 在变量注解, 函数(方法) 形参和返回值注解中, 均可以使用

python 复制代码
def func(data: Union[int, str])->Union[int, str]:
    return data 
相关推荐
张张123y6 小时前
后端第十四课:Agent 记忆系统(让 Agent 记住上下文和用户,跨会话不健忘)
java·大数据·人工智能·python·agent·记忆
阿里嘎多学长11 小时前
2026-10-20 GitHub 热点项目精选
开发语言·程序员·github·代码托管
happylifetree11 小时前
Python67:核心语法-函数进阶-参数类型(函数作为参数)
python
dadaobusi11 小时前
学习: PCIe 6.0 的 L0p
学习
布吉岛的石头11 小时前
Java 程序员第 50 阶段2:预训练的目标函数:自回归语言建模本质
java·开发语言·人工智能·深度学习·回归·transformer
小羊没烦恼!12 小时前
铁道部新客票系统设计(二)
开发语言·前端·数据库·python·oracle·c#·php
quantdash_cc12 小时前
从实时行情到价格观察表:用 Python 和 Pandas 构建策略输入数据
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
镜子AI12 小时前
镜子AI工程实践:用 Python 做 GEO 实体一致性审计,并自动生成 JSON-LD 结构化数据
人工智能·python·json
燕落南枝13 小时前
CSS 学习:类型选择器与 AI 注释实战
css·人工智能·学习
昂好的day13 小时前
VisionMaster 通信模块实战(上):Modbus、TCP 收发、协议组装解析
开发语言·网络·网络协议·tcp/ip·c#