python 编码中为什么要写类型注解?

发布时间:2026/9/13 21:38:16

python 编码中为什么要写类型注解? 1、背景我们先谈谈为什么在编码过程中强烈推荐使用类型注解 这对于刚开始学习的人来讲是特别容易上手的, 其间的道理在于把计算机底层原理全方位地进行封装, 以及动态语言所具备的特性促成使用时特别舒适。然而这种所谓的“舒适”得有相应代价, 我们或许听说过一句描述动态语言的话语,即动态在某时会让人觉得畅快。紧接着就始终处于这般动态的情况之下, 持续保持畅快。那为何会这样讲呢? 动态确实能够给予我们于编码之际更多的灵活性以及能力, 然而动态所带来的却是更多的不确定性以及混乱, 致使后来的维护者乃至作者自身都会生出极大的维护压力能够想象一个历经数年迭代的复杂系统, 要是大多都运用动态的方式去编写代码的模样, 正所谓能力越大责任越大, 需加以克制。在维护以及开发期间, 类型注解能够很好地协助我们, 将变量的类型厘清, 从而降低不确定性以及混乱程度, 进而能够从容地去使用变量。在这儿讲了这么多没用的话, 主要目的在于, 能够使得读者深切地认识到, 动态所导致的正向以及反向带来的那种“爽”。往后就要进入主题了。2、使用方式2.1、 内置的类型注解大家可能都接触过内置注解, 不过总觉得它特别麻烦, 致使后面很轻易地就放弃去写注解, 其中缘由是得到的并非正面反馈, 请看下面这个示例:字符串类型的a被赋予结果为aa的值, 整数类型的b被赋予结果为1的值, 参数和返回标注了类型, 使得接下来调用时能够进行提示, 定义了一个有特定要求的函数, 其要求这个函数的唯一参数a是字符串类型且返回应为字符串类型时其函数体为用a格式化后的Hello {a}, 执行输出语句打印了用括号括起来的world时出现了错误, 这里进行补充说明, 一些简单的标注看起来好像起不到成效, 然而要是换成有含义的名字又会如何呢, 定义了User这个名称, 它被赋予一个函数, 该函数的参数规范为User类型的u且没有返回值, 其函数体是用u格式化后的Hello {u}, 执行输出语句打印了用括号括起来的空字符串时出现了错误。方才简略地展示了, 内置的那种类型注解究竟是怎样予以运用的, 然而实际上这般简单情况下的类型注解, 根本没办法助力我们优质地给变量施行标注接下来要讲述的是一个模块。2.2、 模块的快速入门类型注解的主角是模块, 函数和变量类型注解在运行时并不会被强制执行, 不过这些注解能够被使用在, 例如类型检查器、IDE以及静态检查器等第三方工具上, 在我们编码的时候, 这些第三方工具会进行提示以及纠错。下面提供一些日常使用到的方法与用例给大家参考# 自定义类型注解User等于等于int, # 定义有多种类型注解的类型为.(, str, bytes), a_str等于a且等效于ba, # 通用类型, 接收通用的类型, 要尽量少地去使用def函数参数为(a:.Any)来打印输出a 模块是允许使用下标来辅助标记类型的, # 像列表这个变量而言, 下标便作为存储列表的属性, def函数参数为(:.List), 最后的可返回值为由相关类型限定为.List, # 字典类型的话, 下标里面第一个当成是key, 第二个为(:.Dict)。User, Age括号右箭头点字典冒号通过哈希符号, 元祖, 下标为元祖的属性定义左括号冒号点元组等于无右箭头点元组冒号通过哈希符号, 联合, 在一些场景下我们某些参数或返回值是不确定的, 至少给定一个参数类型定义左括号a逗号b冒号点联合右箭头点联合冒号通过哈希符号, 逗号与联合有点类似, 但默认多带一个None, 至少给定一个参数类型, 如冒号等价于联合。str, None定义一个函数, 它接受一个字符串类型的参数, 但其返回值类型是一个未明确指定的类型, 代码表示为空语句。当返回值有多个的时候, 如果需要返回字符串类型、整数类型、布尔类型, 其函数定义的形式是, 括号内为空, 返回值类型为一个未明确具体内容的元组类型。str, int, bool, float通过#类, 类自身同样是一种那类型class: 向上: 字符串等于“向上”向下: 字符串等于“向下”#明确有着需求一个对象的那些参数def : -: 通过#如此在一些枚举参数面临的场景之下, 我们也能够运用类当作我们枚举参数的那种归类def : -: 通过#要是上面所提及的枚举参数你觉着并并未特别好地达成, 那么依旧能够采用自定义类型注解的办法去达成 结构向上: “向上”向下: “向下”#在.9里对于枚举参数类型有着更好的支撑模式 类型。r, rb, w, wb以某种方式确定这一情况, 即定义一个函数, 它接收参数为一个字符串类型的文件路径, 还有一个处于特定模式类型的参数, 之后该函数返回一个也是字符串类型的结果 , 具体来说在使用时输入为(/some/path, r) , 这种情况下是正常的 , 而要是输入(/other/path, typo) , 就会提示该模式类型不合法 , 这里所说的类型 , 是在一些存在多态类的场景下 , 用于标注同一个类型的不同的形态 , 比如定义一个用户类User , 之后进行一些相关的类的定义 , 这里存在多个类 , 它们都与User相关 , 这相当于某种联合类型。User, , ,def (: .Type) - User: ()上述十几个用例场景大体而言能够覆盖多数日常编码情形, 要是存在一些别的需求, 那么可以参考官方的文档, 其上有着明确的说明。Docs: /zh-cn/3/lib…3、写在最后期望文章可以对众人对于类型注解的知晓以及运用产生助益, 尽早告别处于被那种复杂状态缠绕得心里忍不住想要发火却又理不清头绪的日子。
延伸阅读

更多相关文章

2026/9/13 21:38:16

Python编程语言的注释方式有哪些?老男孩python培训

编程语言里, 总能发现注释这一功能, 它极为有用, 还特别重要, 更是不可或缺的。编写程序之际, 写程序的人会针对语句、程序段、函数等作出解释或者给予提示, 这便是注释, 这么做的目的在于, 使人们能更轻松地去了解代码。那么, 编程语言的注释方式都有啥呢? 下面是详细的内容介…

2026/9/13 21:38:16

【ASPICE】SWE.4 软件单元验证

文章目录前言一、引言二、单元验证过程的目的三、单元验证过程的成果四、单元验证过程的实践五、输入输出六、参考资料前言 Automotive‑SPICE 是嵌入式汽车系统过程评估模型 (PAM) 过程参考模型 (PRM),通过该模型把控追溯整个开发流程。 本文介绍软件单元过程域的…

2026/9/13 21:38:16

Single Cell Expression Atlas(SCEA): 从网页点到代码拉数据

这个基因在哪个器官里表达高?bulk RNA-seq,54个组织位点Human Cell Atlas人体所有细胞类型的完整目录多中心联盟项目,数据分散在各门户SCEA这个基因在某个研究的哪些细胞类型里是?统一重处理的scRNA-seq实验集进行一下类比, &…

2026/9/13 22:33:18

右值大类rvalue的xvalue,和 左值大类glvalue的xvalue的区别

答案:没有区别,它们是同一个东西。 “xvalue” 不是两种不同的 xvalue(一种属于 rvalue、一种属于 glvalue),而是唯一一个同时被两个大类都包含的基本类别——正因为它同时满足"有 identity"(属于…

2026/9/13 22:33:18

大数据压缩技术:核心算法、选型策略与实战优化

1. 大数据压缩技术的核心价值与应用场景在数据爆炸式增长的今天,企业每天产生的数据量已经从GB级跃升至TB甚至PB级别。某电商平台的用户行为日志每天新增超过200TB,而未经压缩的原始数据存储三个月就需要近18PB的存储空间。这不仅仅是硬件成本的问题 - 更…

2026/9/13 22:28:18

前端换行符失效怎么办?深入解析white-space与空白符折叠

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/13 0:01:16

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/13 0:01:16

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/12 6:29:36

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/12 14:32:17

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/13 11:18:28

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码