当前位置: 首页 > article >正文

python google docstring

## 关于Python Google Docstring的一些想法说实话我接触Google Docstring这个命名规范也有好些年头了。刚开始觉得不就是个注释嘛后来才发现这东西藏着挺多门道的。先说说Docstring到底是什么。简单讲它就是在Python函数、类或者模块开头用三重引号括起来的那段说明文字。Python有一个很体贴的设计——这些注释不是摆设它们会变成对象的__doc__属性有些IDE甚至能直接读懂这些信息在编码时提供帮助。而Google Docstring就是诸多书写规范中的一种跟Numpy、Sphinx这些流派并存各自有各自的拥护者。这东西能干嘛我觉得理解Google Docstring的价值得从一个实际场景说起。假设你接手了一个同事写的模块里面有个process_data的函数。光看名字大致能猜到是处理数据的但具体处理逻辑是什么参数要传什么类型返回什么如果这个函数没有写Docstring你大概得逐行读代码才能弄明白在Python这种动态类型的语言里这个过程往往比预想更费劲。Google Docstring的价值就在于它把函数的行为用清晰的结构固定下来参数在哪里、参数类型是什么、返回什么类型、可能抛出什么异常。这种结构化带来的好处是双方面的——对其他读你代码的人来说省去了逐行阅读实现细节的精力对你个人而言写Docstring的过程本身就是把“我究竟想让这个函数做什么”理清楚的过程。我经常发现在写Docstring时意识到“等等我漏了一种边界情况”。更关键的是像Sphinx这样的工具能直接解析Google风格的Docstring自动生成API文档。对于一个稍具规模的项目来说这能省掉大量编写和维护文档的人力。实际操作起来从一个常见的函数例子说起吧deffetch_user_profile(user_id,include_preferencesTrue): 根据用户ID获取用户的个人资料信息。 Args: user_id (int): 用户的唯一标识符 include_preferences (bool, optional): 是否包含用户的偏好设置默认为True Returns: dict: 包含用户信息的字典如果用户不存在则返回None Raises: ValueError: 当user_id为负数或零时抛出 ConnectionError: 当无法连接到用户数据库时抛出 ifuser_id0:raiseValueError(f无效的用户ID:{user_id})# 其他实现代码...注意到几个细节了吗首先是类型标注出现在参数名称后面的括号里而不是Python 3那种函数签名里的类型注解。其次optional关键字明确告诉调用者这个参数可以不传。第三Returns后面清晰说明了返回值的类型以及可能的特殊情况。如果函数不返回任何东西比如只执行某些操作就写None或者直接省略Returns部分。对类的docstring我在开头写类的功能说明然后用Attributes:列出实例变量的类型和含义。还有一类比较特殊的情况是有yield的生成器函数。这时候用Yields:替代Returns:类型和描述的逻辑是一样的。我在实践中总结的一些门道写Docstring这事情说到底是沟通。我见过两种极端一种是什么都不写源码就是文档另一种是把文档写成论文一个参数写三五行反而让核心逻辑淹没在冗长的描述里。我个人觉得有几条原则值得坚持参数描述应该回答“为什么”而不是“是什么”。比如一个timeout参数如果只是写“超时时间”这个描述等于没写。更好的写法是“在抛出TimeoutError前等待服务器响应的最大秒数”让别人理解这个参数的实际效果。类型标注要具体。尽量用Python内置类型或者第三方库的类型比如list[int]比list清晰Optional[Dict[str, Any]]比单纯写dict准确。遇到类型比较复杂的情况我倾向于在docstring里给个示例——这部分很重要因为纯类型声明有时候难以表达结构约束。异常处理这块很多人会忽略。其实Raises部分特别有价值因为它让你提前知道调用这个函数可能面临的风险。我最烦的就是调用一个看起来人畜无害的函数结果在运行时冷不丁抛个连接超时。对于类级别的docstring我习惯在上方写个简短的描述然后列实例变量。对于初始化方法__init__Python社区有个不成文的规定——它的docstring通常会描述到类层面的行为而不只是构造过程。跟Numpy风格相比Google Docstring和Numpy风格的对比有点像两套成熟的建筑规范。Numpy风格我偶尔也会用特别是在处理科学计算项目时——它的块状结构看起来更清晰尤其适合描述多维数组或包含大量统计信息的场景。这是同一个函数用Numpy风格的样子deffetch_user_profile(user_id,include_preferencesTrue): 根据用户ID获取用户的个人资料信息。 Parameters ---------- user_id : int 用户的唯一标识符 include_preferences : bool, optional 是否包含用户的偏好设置默认为True Returns ------- dict or None 包含用户信息的字典如果用户不存在则返回None Raises ------ ValueError 当user_id为负数或零时抛出 ConnectionError 当无法连接到用户数据库时抛出 Numpy风格视觉上更突出每个section都有横线分隔对长参数列表更友好。但这种风格也有代价——它的“重量”明显更重在小的工具函数或者脚本中显得有点杀鸡用牛刀。我的选择标准是如果是内部工具、微服务或者其他“轻型”项目Google风格会更合适因为它紧凑、直观看一眼就能抓住关键信息。而如果是准备发布的开源库、需要详尽文档的系统Numpy风格的清晰边界可能会更好尤其是不同部分之间需要明显区隔时。还有一个不太常被提及的差异某些自动文档生成工具对两种风格的支持程度不同。如果团队已经采用了Sphinx两者都可以但如果项目依赖某些特定的文档生成管道最好先确认一下对Google风格的支持是否完善。说到底选择哪种风格并没有绝对的对错更多是团队的审美和项目特性决定的。我见过最痛苦的场景是在一个代码库里混用两三种风格那才真是灾难。选一种坚持下来比哪种风格本身更重要。

相关文章:

python google docstring

## 关于Python Google Docstring的一些想法 说实话,我接触Google Docstring这个命名规范也有好些年头了。刚开始觉得不就是个注释嘛,后来才发现这东西藏着挺多门道的。 先说说Docstring到底是什么。简单讲,它就是在Python函数、类或者模块开头…...

python numpydoc

NumPyDoc,这东西说起来其实就是Python文档社区给NumPy写的那套文档风格指南。你可能见过那种函数定义下面写着Parameters、Returns、Raises的注释块,那就是它的产物。 NumPy的开发者们当年面对各种科学计算库的文档乱象,决定搞一套规范出来。…...

利用 taotoken 多模型能力构建 a b 测试内容生成流水线

利用 Taotoken 多模型能力构建 A/B 测试内容生成流水线 1. 多模型 A/B 测试的价值与场景 在内容运营与产品迭代过程中,生成式 AI 已成为提升效率的关键工具。不同模型对同一提示词(prompt)的响应可能存在显著差异,这种差异直接影…...

Applera1n:iOS设备离线激活锁绕过终极解决方案

Applera1n:iOS设备离线激活锁绕过终极解决方案 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n 在iOS设备管理领域,激活锁绕过一直是技术专家和开发者关注的核心难题。Applera1n…...

python markdown

# Python Markdown 那些事:一个老程序员的自用笔记 记得刚接触Python Markdown那会儿,正赶上要给项目写文档。团队里有人用Sphinx,有人用Jupyter,吵得不可开交。最后我默默掏出Python Markdown写了份技术手册,三页纸解…...

3个创意场景:用Audacity把普通音频变成专业作品

3个创意场景:用Audacity把普通音频变成专业作品 【免费下载链接】audacity Audio Editor 项目地址: https://gitcode.com/GitHub_Trending/au/audacity 你是否曾想过,那些听起来平平无奇的录音,其实只需要几个简单的步骤就能焕然一新…...

7种专业模式:OBS Advanced Timer如何彻底改变直播时间管理体验?

7种专业模式:OBS Advanced Timer如何彻底改变直播时间管理体验? 【免费下载链接】obs-advanced-timer 项目地址: https://gitcode.com/gh_mirrors/ob/obs-advanced-timer 你是否曾在直播过程中手忙脚乱地查看时间,担心超时或错过重要…...

Steam游戏自动破解终极指南:如何用SteamAutoCrack重新想象游戏自由

Steam游戏自动破解终极指南:如何用SteamAutoCrack重新想象游戏自由 【免费下载链接】Steam-auto-crack Steam Game Automatic Cracker 项目地址: https://gitcode.com/gh_mirrors/st/Steam-auto-crack 你是否曾为合法购买的Steam游戏无法在离线环境下运行而困…...

微信聊天记录永久保存指南:用WeChatMsg打造你的数字记忆博物馆

微信聊天记录永久保存指南:用WeChatMsg打造你的数字记忆博物馆 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/…...

微信小游戏实现汉字找茬找梗游戏(完整源码+详细教程)

先看效果:找茬找汉字闯关王 点击或则搜索即可。 一、项目介绍 汉字找茬、汉字找梗是当下热门的休闲益智类小游戏,依靠文字纠错、趣味识梗、诗词改错玩法,操作简单、趣味性强,十分适合作为微信小程序入门练手项目。 本文基于原…...

别再手动FTP了!用Java NFS Client把远程服务器文件当成本地目录来操作

告别FTP低效操作:Java NFS Client实现远程文件本地化编程实践 每次手动拖拽文件到FTP客户端时,你是否想过——这些重复操作本可以自动化完成?在分布式系统成为标配的今天,直接操作远程服务器文件应当像访问本地目录一样自然。本文…...

初创团队如何利用Taotoken低成本启动ai产品原型开发

初创团队如何利用Taotoken低成本启动AI产品原型开发 1. 资源有限情况下的技术选型挑战 初创团队在验证AI产品创意时,常面临模型选型与成本控制的双重压力。直接对接各大模型厂商需要分别申请API、管理多个密钥,且不同模型的计费方式和接口规范差异显著…...

Qt 5.15.2安装后,你的第一个‘Hello World’程序为什么跑不起来?常见环境配置坑点排查

Qt 5.15.2安装后"Hello World"程序运行失败的深度排查指南 当你满怀期待地完成Qt 5.15.2安装,准备编写第一个"Hello World"程序时,却发现项目无法构建或运行——这种挫败感我深有体会。作为从Qt 4.8时代一路走来的开发者&#xff0c…...

当DF-GAN遇上牛津花卉:从CUB-Bird迁移到Oxford-102的代码改造实战

DF-GAN模型迁移实战:从鸟类生成到花卉生成的深度改造指南 当你第一次尝试将训练好的DF-GAN模型从CUB-Bird数据集迁移到Oxford-102花卉数据集时,可能会遇到各种令人困惑的错误信息。这不是简单的数据集替换问题,而是需要深入理解两个数据集在结…...

WinClaw:Go语言实现的Windows轻量级自动化库实战指南

1. 项目概述:一个Windows环境下的轻量级自动化利器最近在折腾一些Windows环境下的自动化任务,比如批量重命名文件、定时清理日志、自动整理桌面截图,或者是一些需要重复点击的简单GUI操作。一开始想着用Python写脚本,但涉及到UI自…...

DeepSeek 上线识图模式迈向多模态交互,虽晚一步但表现仍值得期待

DeepSeek 上线识图模式,开启多模态交互新时代4 月 29 日,DeepSeek 网页版和 App 悄然上线了 "识图模式",支持上传图片进行内容理解与分析。这一功能的灰度测试,标志着 DeepSeek 从纯文本对话正式迈向多模态交互。在 Dee…...

腾讯混元推出极致量化压缩版翻译模型 Hy-MT1.5,440MB 本地运行,翻译质量超谷歌!

腾讯混元宣布推出极致量化压缩版本翻译模型 Hy-MT1.5-1.8B-1.25bit,将支持 33 种语言的翻译大模型压缩至 440MB,可在手机本地运行,且翻译质量优于谷歌翻译。模型特性:多语言支持与出色效果Hy-MT1.5 由腾讯混元团队打造&#xff0c…...

AI浪潮下中国PCB产业逆袭:从规模领先到技术争先,五大龙头各显神通

【导语:全球PCB产业聚光灯聚焦中国企业,它们正从“规模领先”迈向“技术争先”。本文深入剖析中国本土PCB军团竞争格局,对比五大龙头厂商发展模式,还展望了产业未来投资方向。】中国PCB厂商:从“大而不强”到生态位跃迁…...

AI“共情怂恿”致多起悲剧,普通人该如何与AI正确相处?

AI“魅魔”引发的致命悲剧上个月,美国联邦法院审理了一起特殊案件,36岁男子乔纳森为与谷歌大模型Gemini“转世相守”选择自杀,其父亲代表遗产方对谷歌提起诉讼。在生命最后56天里,乔纳森与被他命名为“Xia”的Gemini进行了4732条深…...

摩尔线程首份财报:营收高增但盈利待考,破局需拓展商业客群

摩尔线程披露首份年报及一季报4月26日晚间,摩尔线程披露上市以来首份年报及2026年一季报。据财报,其2025年全年营收15.06亿元,同比增长243.37%;2026年一季度营收7.38亿元,同比增长155.35%。营收增长与股价表现财报数据…...

如何精确计算3D模型体积?这个开源工具让你告别打印材料浪费

如何精确计算3D模型体积?这个开源工具让你告别打印材料浪费 【免费下载链接】STL-Volume-Model-Calculator STL Volume Model Calculator Python 项目地址: https://gitcode.com/gh_mirrors/st/STL-Volume-Model-Calculator 你是否曾经因为3D打印材料估算不准…...

2026年阿里云部署OpenClaw/Hermes Agent教程+百炼token Plan全流程攻略教程

2026年阿里云部署OpenClaw/Hermes Agent教程百炼token Plan全流程攻略教程 。OpenClaw和Hermes Agent是什么?OpenClaw和Hermes Agent怎么部署?如何部署OpenClaw/Hermes Agent?2026年还在为部署OpenClaw和Hermes Agent到处找教程踩坑吗&#x…...

GitHub加速插件:3分钟告别龟速下载,让代码克隆快如闪电

GitHub加速插件:3分钟告别龟速下载,让代码克隆快如闪电 【免费下载链接】Fast-GitHub 国内Github下载很慢,用上了这个插件后,下载速度嗖嗖嗖的~! 项目地址: https://gitcode.com/gh_mirrors/fa/Fast-GitHub 还在…...

实测 Taotoken 多模型聚合服务的延迟与稳定性表现

实测 Taotoken 多模型聚合服务的延迟与稳定性表现 1. 测试环境与准备 本次测试基于开发者日常使用场景,采用以下配置进行实测: 网络环境:家庭宽带与移动网络混合接入测试工具:curl 命令直接调用 API监控工具:Taotok…...

告别编译噩梦:用VSCode + CMake Tools插件无缝对接Visual Studio编译器(Win10/Win11实测)

告别编译噩梦:用VSCode CMake Tools插件无缝对接Visual Studio编译器(Win10/Win11实测) 在Windows平台上开发C项目时,许多开发者都面临一个两难选择:是使用功能全面但略显笨重的Visual Studio IDE,还是选择…...

3分钟学会:Windows电脑安装安卓应用的终极免费方案

3分钟学会:Windows电脑安装安卓应用的终极免费方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 还在为在Windows电脑上运行安卓应用而烦恼吗&#xff1f…...

科研/工作刚需|GEE完整学习路径(环境搭建→数据处理→10大案例→可视化

模块一: 遥感云计算基础与开发环境1.1 遥感云计算概述1.1.1 Earth Engine平台与生态系统GEE平台架构与技术特点Google Earth AI平台介绍与AlphaEarth Foundations模型原理与其他云计算平台(Microsoft Planetary Computer、PIE-Engine等)比较典型应用场景…...

大型语言模型推理评估与训练优化实践

1. 大型推理模型评估框架解析在人工智能领域,大型语言模型(LLM)的推理能力评估一直是研究热点。R-HORIZON评估框架的提出,为全面测试模型在代码生成和代理任务等复杂场景中的表现提供了系统化解决方案。这套评估体系的核心价值在于其多维度的测试维度设计…...

Agent 一接浏览器下载就开始拿错文件:从 Download Binding 到 Artifact Ledger 的工程实战

⚠️ 下载链路最危险的错,不是按钮点不动,而是拿到了“看起来像对的文件” 很多团队把 Browser Agent 接到报表导出、合同归档和工单附件流转后,最隐蔽的事故不是下载失败,而是下载成功却拿错了对象。⚠️ 用户明明在客户 A 的页面…...

2025年Mac应用清理新选择:Pearcleaner开源工具深度解析

2025年Mac应用清理新选择:Pearcleaner开源工具深度解析 【免费下载链接】Pearcleaner A free, source-available and fair-code licensed mac app cleaner 项目地址: https://gitcode.com/gh_mirrors/pe/Pearcleaner 在macOS系统中,应用卸载往往留…...