autodocstring 插件生成 docstring 需满足三条件:文件语言为 python、光标在函数定义正下方第一行、函数签名含参数名和返回箭头;否则输入"""无响应。

autodocstring 插件装对、光标位置准、函数签名有信息——这三点没满足,按多少次 Enter 都不会生成 docstring。
为什么输入"""后没反应?检查这三个硬条件
常见错误现象是光标在函数里敲 """ 回车,直接换行,什么都没出来。这不是插件坏了,而是触发失败:
- 当前文件语言模式必须是
Python(右下角状态栏显示“Python”,不是“Plain Text”或“JSON”) - 光标必须在函数/方法定义的正下方第一行(不能在函数体内部、不能在类定义外、不能在注释行)
- 函数签名得有参数名和
->返回箭头(def foo():这种空括号默认不触发)
Google 和 NumPy 风格选哪个?看下游工具链
风格不是个人喜好问题,而是影响工具能否正确解析:
-
Google风格(默认):字段用Args:/Returns:等关键词缩进,Pylance和大多数 LSP 客户端识别最稳,适合新项目 -
NumPy风格:字段顶格写,用冒号分隔(Parameters、Returns),numpydoc和Sphinx构建 API 文档时更友好,老科学计算项目常用 - 别混用:
autodocstring.docstringFormat设为"google"后,所有生成都统一;手动改个别函数风格会导致pylint报invalid-docstring-quotes
类型推断不准?直接写类型提示比调设置更靠谱
autodocstring.guessTypes 开关只是辅助,靠变量名和默认值猜类型(比如 name="xxx" → str),但容易翻车:
- 会被写成
list,不会变成list[dict] -
Union类型常被简化:Optional[int]可能变成int or None,但格式未必符合PEP 484 - 真正靠谱的做法:直接写
def process(items: list[str]) -> dict[str, float]:,插件会原样抄进 docstring,不猜、不丢、不歧义
生成后还要手动补哪些内容?这些它默认不填
插件只负责结构和签名映射,以下字段必须人工补全,否则文档就是半成品:
- 函数用途的摘要句(第一行):
"""<summary></summary>占位符得替换成“做什么”,不是“怎么做的” - 参数具体行为:
timeout (int)是秒还是毫秒?负值是否禁用?插件不猜业务逻辑 - 异常说明:
Raises:段落完全空白,得自己加ValueError或ConnectionError - 示例代码块:
Examples:段落默认不出现,需手动开启autoDocstring.includeExamples并补内容
最容易被忽略的一点:插件生成的是模板,不是终稿。它省掉的是格式排版和字段罗列,不替代你对业务语义的理解和表达。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











