Python类型注解

Python类型注解

2026年9月16日·#编程学习/python学习笔记Python/类型注解·814 字 4 分钟
浏览量加载中...
AI 摘要

Python类型注解的基本介绍、变量类型注解、类型推断、函数类型注解

类型注解基本介绍#

类型注解是Python中的一种语法特性,用于明确标识变量、函数参数和返回值的数据类型,从而使代码更清晰、更安全、更易维护。

变量类型注解语法#

变量名: 数据类型 =

示例对比#

# 无类型注解
a = 695
score = 98.5
hobby = "Python"
flag = True
pic = None
names = ["A", "C", "E"]
phones = {"13309091111", "15209109121"}
options = {"count": 0, "total": 0}
goods = ("手机", 5999, 1)
# 有类型注解
a: int = 695
score: float = 98.5
hobby: str = "Python"
flag: bool = True
pic: None = None
names: list[str] = ["A", "C", "E"]
phones: set[str] = {"13309091111", "15209109121"}
options: dict[str, int] = {"count": 0, "total": 0}
goods: tuple[str, int, int] = ("手机", 5999, 1)

类型推断#

类型推断是指Python解释器自动推断出变量、表达式或函数返回值的数据类型的能力,而无需开发者显式声明。

示例#

# Python会自动推断类型
a = 695 # 推断为 int
score = 98.5 # 推断为 float
hobby = "football" # 推断为 str
flag = True # 推断为 bool
pic = None # 推断为 NoneType
names = ["张三", "李四", "王五"] # 推断为 list[str]
goods = ("鼠标", "键盘", "USB") # 推断为 tuple[str, str, str]

注意事项#

  • 在对变量进行直接赋值,或者涉及到变量的运算、容器的推导等场景时,解释器会自动推导出变量的类型

类型注解小结#

  1. 类型注解的写法?

    • 变量: 数据类型(如 a: int
  2. 常见类型的写法

    • intfloatboolstrNonelistsettupledict
    • 多类型:str | int(使用 | 表示或)
  3. 为什么要使用类型注解,有什么好处呢?

    • 代码结构更清晰、代码逻辑更安全、易维护
    • 更准确的代码自动提示
    • 提前发现代码潜在问题

重要提醒#

如果对变量直接赋值、变量运算等场景,Python会自动进行类型推断

Python是动态类型语言,添加的类型注解只是提示,并不是强制约束!!!


函数类型注解#

为函数添加类型注解,其实主要就是为函数的参数和返回值添加类型注解。

语法格式#

def 函数名(参数名: 参数类型, ...) -> 返回值类型:
函数体
return 返回值

示例1:单返回值#

def calc(scores: list[int]) -> float:
return sum(scores) / len(scores)
# 调用
result = calc([85, 90, 95, 100])
print(result) # 92.5

示例2:多返回值#

def calc_data(scores: list[int]) -> tuple[int, int, float]:
max_v = max(scores)
min_v = min(scores)
avg_v = sum(scores) / len(scores)
return max_v, min_v, avg_v
# 调用
max_score, min_score, avg_score = calc_data([85, 90, 95, 100])
print(max_score, min_score, avg_score) # 100 85 92.5

语法说明#

  • 参数类型:在参数名后加 : 类型
  • 返回值类型:在函数名后加 -> 类型

函数类型注解小结#

  1. 函数中类型注解的语法?

    def calc_data(scores: list[int]) -> tuple[int, int, float]:
    ...
  2. 推荐使用场景

    • 对于需要团队协作开发和长期维护的项目,推荐使用类型注解

总结口诀#

  • 变量注解:冒号后面写类型,等号后面给值
  • 容器注解:list[str]、dict[str, int]、tuple[str, int, int]
  • 多类型:用 | 分隔,如 str | int
  • 函数注解:参数冒号写类型,箭头后面写返回
  • 类型推断:直接赋值自动推,不用手写也行
  • 动态语言:注解只是提示,不是强制约束

评论区

[ 标签 ]
# AI37# AI 编程2# AI工具1# Ajax2# Apifox1# AstrBot3# Astro2# CC Switch1# CDN2# Claude Code1# claudecode2# ClaudeCode1# Cloudflare2# CloudFlare2# CloudFlare-ImgBed3# coc3# CSS6# DeepSeek6# deepseek2# DELETE1# Docker1# EdgeOne3# Gist1# git1# GitHub1# hexo-circle-of-friends1# HTML6# HTTP5# ImageManager1# Java23# java13# JavaScript5# JDBC3# JSON2# JUnit1# LangChain25# Logback1# Maven6# Muse Spark1# Mybatis1# MyBatis4# MySQL28# MySql1# NapCat1# Node.js1# obsidian2# Obsidian5# OpenCode4# ORM1# PathVariable1# PicGo1# PyCharm1# Python65# RequestBody1# RequestMapping1# RESTful风格1# skills1# Slf4j1# SpringBoot11# SQL2# Streamlit5# Svelte2# TailwindCSS1# Telegram3# Tlias2# Vercel1# vscode2# Vue7# Waline3# WebDAV1# Web基础6# Web开发6# WinSCP1# YAML1# 三层架构1# 中二宣言1# 书籍1# 使用文档10# 写作1# 函数2# 刷步数1# 前端32# 动态1# 动漫1# 包1# 单词2# 博客7# 博客工作流1# 博客开发2# 参数接收1# 友链1# 反思2# 图床6# 地图1# 备份2# 大模型1# 奇思妙想1# 存储1# 学习方法6# 学校1# 宝塔面板3# 宝宝10# 对象1# 导航栏1# 工具2# 开发1# 开发工具1# 开发规范1# 开心1# 异常处理1# 影视2# 微信1# 性能优化2# 总结1# 想法15# 感受1# 感悟11# 指南1# 提示词工程1# 插件5# 故障排除1# 效率工具2# 教程10# 数据分析9# 数据库27# 数据结构1# 文件操作2# 斩神1# 日常92# 日志框架1# 朋友圈1# 朱元璋1# 模块1# 模板1# 正则表达式2# 测试1# 游戏2# 爬虫7# 生活迁移1# 电影2# 电脑1# 碎碎念1# 视觉识别1# 类1# 类型注解1# 网络基础2# 网络教室1# 羊毛2# 脚本2# 脚本工具1# 自动化2# 蓝奏云1# 订阅推荐2# 记录2# 评论系统1# 词根1# 词缀1# 说说1# 足迹1# 跑步2# 路径参数1# 转载2# 运动1# 部落冲突1# 配置1# 随机图1# 面向对象5# 音乐3# 音标1# 饮食1# 驼峰命名1# 高德地图1
[ 公告 ]

如果你喜欢,那么欢迎来到我的世界!

了解更多
[ 音乐 ]
封面

音乐

暂未播放

0:000:00
暂无歌词
找不到相关结果。
[ contents ]
[ 全部文章 ]