Python 代码如果要在注释中描述一个接口的返回值,是否有标准格式?

Python 代码如果要在注释中描述一个接口的返回值,是否有标准格式?

17 回复

可以参考 google 的 python coding style: https://github.com/google/styleguide/blob/gh-pages/pyguide.md#383-functions-and-methods
以前的公司也用过这个
“”“ Summary.

Details.

:arg1, int: i do this
:arg2, str: i do that
:return, list: i do both
"""
仅供参考


Python里描述接口返回值,最主流和推荐的标准是 reStructuredText (reST) 格式,通常配合 Sphinx 文档生成器使用。这已经是社区事实上的标准。

具体来说,就是在函数或方法的 docstring 里,用 :rtype: 指定返回类型,用 :return::returns: 描述返回值。

代码示例:

def get_user_info(user_id: int) -> dict:
    """
    根据用户ID获取用户详细信息。

    :param user_id: 用户的唯一标识符
    :type user_id: int
    :return: 包含用户信息的字典,格式为 {'id': int, 'name': str, 'email': str}
    :rtype: dict
    :raises ValueError: 当 user_id 小于等于0时抛出
    """
    if user_id <= 0:
        raise ValueError("用户ID必须为正整数")
    # ... 这里是具体的实现逻辑 ...
    return {'id': user_id, 'name': '张三', 'email': 'zhangsan@example.com'}

关键点解释:

  1. :return::returns::后面紧跟对返回值本身的文字描述,说明它是什么、包含什么内容。
  2. :rtype::后面紧跟返回值的Python类型。如果你的函数返回多种类型,可以用 Union 表示,例如 :rtype: dict or None:rtype: Union[dict, None]
  3. 配合类型提示:在Python 3.5+中,应优先使用函数注解(Type Hints) 来声明返回类型(例子中的 -> dict)。这样在docstring的 :rtype: 部分可以省略,或者只做更详细的补充说明。现代IDE和类型检查工具(如mypy)能直接识别函数注解。

其他常见格式(作为了解):

  • Google 风格:也广泛使用,更简洁。
    def get_user_info(user_id: int) -> dict:
        """
        根据用户ID获取用户详细信息。
    
        Args:
            user_id (int): 用户的唯一标识符。
    
        Returns:
            dict: 包含用户信息的字典,格式为 {'id': int, 'name': str, 'email': str}
    
        Raises:
            ValueError: 当 user_id 小于等于0时抛出。
        """
    
  • NumPy/SciPy 风格:在科学计算领域常见,更详细但写法稍复杂。

总结建议:

对于新项目,强烈建议使用 reST 格式并搭配函数注解,这是最专业和通用的做法。

现在做的类似于 写的,就是标点符号不同,格式一致

那肯定使用标准的 docstring 格式啊

google 这个其实就是规定使用 python docstring。用这个的话可以让 help()函数显示你的注释,还可以用 sphinx 自动生成文档

  1. docstring,主要有 numpy, google, sphinx 三种风格,sphinx 工具支持最完善,个人喜欢 google 风格
    2. 用装饰器 格式自己定,很方便生成其他格式
    3. 类型注解,标准格式( typing )或者自己定格式,也很方便生成其他格式

用 3.6 吧。

def my_func() -> str: pass

2.7 的话好像是
:rtype:

大兄弟没认真审题啊,站长问的是在注释里描述返回值

type hint 有时候会很复杂,尤其是返回一些自定义类型的时候需要导一遍

sphinx 格式 方便生成 api 文档吧

果然动态语言一旦工程化起来, 都在向静态语言靠拢

“”"

:return: result
:rtype: Dict[str, str]
“”"

如果用 2 的话 https://www.jetbrains.com/help/pycharm/type-hinting-in-product.html
不过还是放弃吧, 换语言吧。

typehint, mypy 了解一下

难道是关于刷存在感的公司的事情?


奇怪, 我之前似乎是在这个帖子下留言“你猜”,然后被你封禁了?
但我无意中发现换个 ip 竟然能登陆?究竟是没有封号?还是?

回到顶部