商城首页欢迎来到中国正版软件门户

您的位置:首页 >Python怎么给函数添加文档注释_遵循Google风格编写Docstring

Python怎么给函数添加文档注释_遵循Google风格编写Docstring

  发布于2026-05-03 阅读(0)

扫一扫,手机访问

Python怎么给函数添加文档注释_遵循Google风格编写Docstring

Python怎么给函数添加文档注释_遵循Google风格编写Docstring

给Python函数写文档注释(Docstring),简单来说就是用三引号"""包裹起来的一段说明文字,直接放在函数定义的下方。至于Google风格,它并非Python语法的硬性规定,而是一套广为接受的格式约定。其核心价值在于提升可读性——只要结构清晰、字段对齐,无论是调用内置的help()函数,还是在现代IDE中查看悬停提示,都能获得整洁、易读的文档。

Google Docstring的基本结构怎么写

它的骨架很清晰,通常分为三个部分:首先是一句简短的摘要,接着空一行,然后是包含参数、返回值等在内的详细说明。这里有几个必须遵守的格式铁律:所有字段名(比如Args:Returns:)必须顶格写,以冒号结尾,并且后面紧跟一个空格。参数名称则务必与函数签名里的变量名保持一字不差。

新手常犯的错误,比如把Args:缩进了、参数名拼写有出入,或者漏掉了冒号和空格,这些看似微小的失误,都可能导致pydoc或Sphinx这类文档生成工具无法正确提取和解析参数信息。

  • Args: 每个参数独占一行,格式为 参数名 (类型): 描述。类型请使用strintOptional[List[str]]这类具体的类型名称。
  • Returns: 说明返回值的类型和具体含义,例如 bool: 如果文件存在则返回True,否则返回False
  • Raises: 这里只列出函数内部主动抛出的异常(例如ValueError),像TypeError这类由Python解释器自动触发的运行时异常通常无需写入。

带类型提示的函数怎么写Args字段

你可能会问,既然已经用了PEP 484引入的类型提示(比如def func(x: int) -> str:),那Args:里还有必要再写一遍类型吗?答案是肯定的,两者并不冲突,且建议保持一致。原因在于,不少开发工具(例如VS Code的悬停提示)在展示文档时,会优先或同时依赖Docstring中的类型描述,而不仅仅是函数签名里的类型注解。

立即学习“Python免费学习笔记(深入)”;

这在一些特定场景下尤其有用,比如团队协作中有人关闭了类型检查,或者项目需要兼容旧版本的Python。

  • 不要写成 x (int, optional): ...,而应使用 x (Optional[int]): ...,这样能与类型提示的语法更好地对齐。
  • 如果参数有默认值,可以在描述末尾补充说明,例如 timeout (float): 请求超时时间,单位秒。默认为30.0。
  • 避免风格混用是个好习惯。比如,在Google风格的Args:里写x: int(这是NumPy风格的写法)就不太规范,Google风格强制要求用括号将类型括起来。

怎么验证Docstring是否写对了

最直接的检验方法,就是在交互式环境或脚本里调用help(你的函数名),看看输出是否工整、各个字段是否被正确识别。想更深入一点?可以使用pydoc -w 模块名命令生成HTML格式的文档页面,或者将格式检查集成到持续集成(CI)流程中,用pydocstyle这样的工具来自动校验。

不过,这里有几个容易踩的坑:pydocstyle默认检查的是PEP 257标准,需要加上--convention=google参数才会按照Google风格来检查。另外,如果一个参数的描述需要多行,那么续行必须进行缩进对齐(通常是4个空格),否则会被误识别为一个新的字段。

  • 安装检查工具: pip install pydocstyle
  • 运行检查: pydocstyle --convention=google 你的模块.py
  • 常见报错解读: 如果看到D103 Missing docstring in public function,说明某个公开函数缺少了Docstring;而D401 First line should be in imperative mood则意味着摘要的第一句话应该使用祈使语气(例如“解析配置文件并返回字典”),而不是以“This function...”开头。

说到底,比对齐格式更重要的,是把逻辑写清楚。真正考验功力的是能否准确描述“这个参数在什么边界条件下会触发何种行为”——比如,strip_whitespace (bool): 是否去除空白字符。若为True且输入为None,则会抛出ValueError。 像这样把前提和后果讲明白,远比单纯追求冒号对齐有价值得多。

本文转载于:https://www.php.cn/faq/2314962.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注