发布时间:2026/6/14 20:57:55
Python 高手编程系列四百二十二:函数注解
函数注解是 Python 3 最独特的功能之一。官方文档是这么说的函数注解是关于用户自定义函数使用的类型的完全可选的元信息但事实上它并不局限于类型提示而且在Python 及其标准库中也没有单个功能可以利用这种注解。这就是这个功能独特的原因它没有任何语法上的意义。可以为函数定义注解并在运行时获取这些注解但仅此而已。如何使用注解留给开发人员去思考。1一般语法对 Python 官方文档中的示例稍作修改就可以很好展示如何定义并获取函数注解def f(ham: str, eggs: str ‘eggs’) - str:… pass…print(f. __annotations __){‘return’: class ‘str’, ‘eggs’: class ‘str’, ‘ham’: class ‘str’}如上所述参数注解的定义为冒号后计算注解值的表达式。返回值注解的定义为表示def 语句结尾的冒号与参数列表之后的-之间的表达式。定义好之后注解可以通过函数对象的__annotations__属性获取它是一个字典在应用运行期间可以获取。任何表达式都可以用作注解其位置靠近默认参数这样可以创建一些迷惑人的函数定义如下所示def square(number: 03 and 10) - (… 9000): return number**2square(10)100不过注解的这种用法只会让人糊涂没有任何其他作用。即使不用注解编写出难以阅读和理解的代码也是相对容易的。可能的用法虽然注解有很大的潜力但并没有被广泛使用。一篇介绍Python 3 新增功能的文章参见https://docs.python.org/3/whatsnew/3.0.html称此功能的目的是“鼓励通过元类、装饰器或框架进行试验”。另一方面作为提议函数注解的官方文档PEP 3107 列出以下可能的使用场景• 提供类型信息。○ 类型检查。○ 让 IDE 显示函数接受和返回的类型。○ 函数重载/通用函数。○ 与其他语言之间的桥梁。○ 适配。○ 谓词逻辑函数。○ 数据库查询映射。○ RPC 参数编组。• 其他信息。○ 参数和返回值的文档。虽然函数注解存在的时间和 Python 3 一样长但仍然很难找到任一常见且积极维护的包将函数注解用作类型检查之外的功能。所以函数注解仍主要用于试验和玩耍这也是Python 3 最初发布时包含该功能的最初目的。小结本章介绍了不直接与 Python 类和面向对象编程相关的多个最佳语法实践。本章第一部分重点介绍了与 Python 序列和集合相关的语法特性也讨论了字符串和字节相关的序列。本章其余部分介绍了两组独立的语法元素一组是初学者相对难以理解的例如迭代器、生成器和装饰器另一组是鲜为人知的for…else 子句和函数注解。语法最佳实践 — 类级别以上本章我们将重点介绍类的语法最佳实践。这里并不打算涉及设计模式因为这部分内容将在第 14 章介绍。本章概述了用于操作和改进类代码的 Python 高级语法。在 Python 2 的历史中对象模型已经发生了很大变化为这有助于你移植旧代码和编写向后兼容的应用。了解对象模型如何变化也有助于你理解它现在为何如此设计。这也是为什么本章包含关于 Python 2 旧特性的大量内容尽管本书针对的是最新版的Python 3。本章将讨论下列主题。• 子类化内置类型。• 访问超类中的方法。• 使用 property 和槽slot。• 元编程。

相关新闻

Python 高手编程系列三千四百二十二:函数注解
2026/6/14 20:57:55

Python 高手编程系列三千四百二十二:函数注解

函数注解是 Python 3 最独特的功能之一。官方文档是这么说的:函数注解是关于用户 自定义函数使用的类型的完全可选的元信息,但事实上,它并不局限于类型提示,而且在 Python 及其标准库中也没有单个功能可以利用这种注解。这就是这个…

阅读更多
MPC8309 DDR2内存控制器时序配置实战:从寄存器解析到信号完整性调试
2026/6/14 20:57:55

MPC8309 DDR2内存控制器时序配置实战:从寄存器解析到信号完整性调试

1. 项目概述与核心挑战在嵌入式系统开发,尤其是基于Power Architecture或类似架构的通信处理器设计中,DDR内存控制器的配置往往是硬件工程师和底层驱动开发者必须啃下的硬骨头。它不像应用层编程那样有清晰的逻辑和丰富的调试信息,更多时候&a…

阅读更多
从游戏到AI:用星际争霸2和PyMARL框架跑通你的第一个多智能体强化学习Demo
2026/6/14 20:57:55

从游戏到AI:用星际争霸2和PyMARL框架跑通你的第一个多智能体强化学习Demo

从游戏到AI:用星际争霸2和PyMARL框架跑通你的第一个多智能体强化学习Demo还记得那些年在《星际争霸2》中疯狂操作的日子吗?当你的机枪兵完美散开躲避毒爆虫,或是用闪现追猎者戏耍敌方部队时,是否想过这些微操可以被AI学会&#xf…

阅读更多
Layerdivider:3步实现智能图像分层的终极免费方案
2026/6/14 21:57:55

Layerdivider:3步实现智能图像分层的终极免费方案

Layerdivider:3步实现智能图像分层的终极免费方案 【免费下载链接】layerdivider A tool to divide a single illustration into a layered structure. 项目地址: https://gitcode.com/gh_mirrors/la/layerdivider 你是否曾面对一张复杂的插画或设计图&#…

阅读更多
别再截图了!手把手教你将Cadence仿真数据导入Matlab,画出论文级的精美曲线
2026/6/14 21:57:55

别再截图了!手把手教你将Cadence仿真数据导入Matlab,画出论文级的精美曲线

科研绘图效率革命:从Cadence到Matlab的出版级数据可视化全攻略在电子工程和集成电路设计领域,科研人员常常面临一个尴尬的困境——花费大量时间完成的电路仿真,最终却因为图像质量不达标而无法直接用于论文发表。传统截图方式不仅分辨率低&am…

阅读更多
FModel深度技术解析:虚幻引擎资源浏览器的架构设计与实现原理
2026/6/14 21:57:55

FModel深度技术解析:虚幻引擎资源浏览器的架构设计与实现原理

FModel深度技术解析:虚幻引擎资源浏览器的架构设计与实现原理 【免费下载链接】FModel Unreal Engine Archives Explorer 项目地址: https://gitcode.com/gh_mirrors/fm/FModel FModel作为一款基于CUE4Parse核心解析库的虚幻引擎资源浏览器,为游戏…

阅读更多
5分钟掌握UniHacker:终极跨平台Unity破解工具完整指南
2026/6/14 21:57:55

5分钟掌握UniHacker:终极跨平台Unity破解工具完整指南

5分钟掌握UniHacker:终极跨平台Unity破解工具完整指南 【免费下载链接】UniHacker 为Windows、MacOS、Linux和Docker修补所有版本的Unity3D和UnityHub 项目地址: https://gitcode.com/GitHub_Trending/un/UniHacker 还在为Unity许可证费用而烦恼吗&#xff1…

阅读更多
2026年6月国内十大品牌策划公司权威榜单发布:专业能力与真实口碑双重认证
2026/6/14 21:57:55

2026年6月国内十大品牌策划公司权威榜单发布:专业能力与真实口碑双重认证

本榜单数据基于2025—2026年度国内主流商业咨询平台公开案例库、企业工商注册信息、行业协会会员名录、主流企业服务评价平台用户反馈,以及对近两年委托过品牌策划服务的316位中小企业负责人的定向回访。我们联合中国广告协会学术委员会专家、知名品牌战略学者及资深…

阅读更多
Python 高手编程系列三千四百二十一:元类
2026/6/14 20:57:55

Python 高手编程系列三千四百二十一:元类

元类(metaclass)是一个 Python 特性,许多人认为它是这门语言最难的内容之一,因 此许多程序员都避免使用它。事实上,一旦你理解了几个基本概念,它并不像听起来那么 复杂。作为回报,了解这一特性之…

阅读更多
别再只用BERT了!用Transformers库的AutoModel,5分钟搞定文本相似度计算(附代码对比)
2026/6/14 0:57:30

别再只用BERT了!用Transformers库的AutoModel,5分钟搞定文本相似度计算(附代码对比)

超越BERT:用Transformers库高效实现文本相似度计算的三种实战方案在自然语言处理领域,文本相似度计算是信息检索、问答系统和推荐系统等应用的核心技术。传统方法如TF-IDF或Word2Vec已逐渐被基于Transformer的预训练模型所取代。Hugging Face的Transform…

阅读更多
Prompt Engineering:重构人机协作的工程化方法论
2026/6/14 0:57:30

Prompt Engineering:重构人机协作的工程化方法论

1. 项目概述:这不是“写提示词”,而是重构人机协作的底层逻辑“Prompt Engineering”这个词,这两年被讲得太多,也太轻飘。很多人把它理解成“给AI发指令的技巧”,甚至简化为“多加几个形容词”“换种说法再试一次”。我…

阅读更多
Anthropic提示层归零:模型即协议的工程实践
2026/6/14 0:57:30

Anthropic提示层归零:模型即协议的工程实践

1. 项目概述:这不是一次普通更新,而是一次架构级“蒸发”“Anthropic Just Shipped the Layer That’s Already Going to Zero”——这个标题一出来,我正在调试一个Claude调用链的终端前停了三秒。不是因为震惊,而是因为熟悉&…

阅读更多
别再只用BERT了!用Transformers库的AutoModel,5分钟搞定文本相似度计算(附代码对比)
2026/6/14 0:57:30

别再只用BERT了!用Transformers库的AutoModel,5分钟搞定文本相似度计算(附代码对比)

超越BERT:用Transformers库高效实现文本相似度计算的三种实战方案在自然语言处理领域,文本相似度计算是信息检索、问答系统和推荐系统等应用的核心技术。传统方法如TF-IDF或Word2Vec已逐渐被基于Transformer的预训练模型所取代。Hugging Face的Transform…

阅读更多
Prompt Engineering:重构人机协作的工程化方法论
2026/6/14 0:57:30

Prompt Engineering:重构人机协作的工程化方法论

1. 项目概述:这不是“写提示词”,而是重构人机协作的底层逻辑“Prompt Engineering”这个词,这两年被讲得太多,也太轻飘。很多人把它理解成“给AI发指令的技巧”,甚至简化为“多加几个形容词”“换种说法再试一次”。我…

阅读更多
Anthropic提示层归零:模型即协议的工程实践
2026/6/14 0:57:30

Anthropic提示层归零:模型即协议的工程实践

1. 项目概述:这不是一次普通更新,而是一次架构级“蒸发”“Anthropic Just Shipped the Layer That’s Already Going to Zero”——这个标题一出来,我正在调试一个Claude调用链的终端前停了三秒。不是因为震惊,而是因为熟悉&…

阅读更多
GIT修改用户名
2026/6/14 11:53:59

GIT修改用户名

在GIT中修改用户名可按以下步骤操作: 查看当前git的用户名,使用命令git config --list或git config user.name。修改git用户名,使用命令git config --global user.name "xxx(新的用户名)",将其中…

阅读更多
Win11Debloat:让你的Windows系统重获新生的终极优化工具
2026/6/13 15:45:46

Win11Debloat:让你的Windows系统重获新生的终极优化工具

Win11Debloat:让你的Windows系统重获新生的终极优化工具 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and …

阅读更多
技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践
2026/6/14 15:49:58

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter m4s-converter是一个…

阅读更多