返回博客列表

编写专业Python代码:Docstring文档注释规范与实践

详细介绍 Python Docstring 的编写规范,包括 reStructuredText 和 Google 风格的文档注释,以及在 PyCharm 中的最佳实践。

2024-01-155 分钟阅读Yaron
#Python#代码规范#开发工具#Python3.8+

编写清晰、规范的注释是专业软件开发的重要一环。在 Python 中,我们不使用 # 作为规范的注释,而是使用文档字符串(Docstrings)。这不仅是为了让人读懂代码,更是为了让工具(如 IDE、文档生成器)能够理解和利用这些信息。

什么是 Docstring?

Docstring 是出现在模块、函数、类或方法定义的第一个语句,用三引号 """''' 包围。它会成为该对象的 __doc__ 属性,可以被 help() 函数和各种工具提取。

主流 Docstring 规范

目前最主流的两种 Docstring 规范是 reStructuredText (reST)Google 风格。PyCharm 默认支持并推荐 reST,但可以轻松切换到 Google 风格。

1. reStructuredText (reST) 风格(PyCharm 默认)

reST 是 Python 官方文档和许多大型项目(如 Sphinx)使用的标准格式。

函数/方法注释示例:

def calculate_area(radius: float) -> float:
    """计算圆的面积。

    这是一个更详细的描述,说明函数的功能和使用的公式。

    :param radius: 圆的半径,必须为正数。
    :type radius: float
    :return: 计算出的圆的面积。
    :rtype: float
    :raises ValueError: 如果半径为负数。
    """
    if radius < 0:
        raise ValueError("半径不能为负数")
    return 3.14159 * radius * radius

类注释示例:

class DataProcessor:
    """用于处理和清洗数据的工具类。

    该类提供了一系列静态方法,用于执行常见的数据清洗任务。

    :ivar batch_size: 处理数据时的批次大小。
    :vartype batch_size: int
    """
    def __init__(self, batch_size: int = 100):
        self.batch_size = batch_size

2. Google 风格

Google 风格因其出色的可读性而广受欢迎,结构更像是带标题的段落。

函数/方法注释示例:

def calculate_area(radius: float) -> float:
    """计算圆的面积。

    这是一个更详细的描述,说明函数的功能和使用的公式。

    Args:
        radius (float): 圆的半径,必须为正数。

    Returns:
        float: 计算出的圆的面积。

    Raises:
        ValueError: 如果半径为负数。
    """
    if radius < 0:
        raise ValueError("半径不能为负数")
    return 3.14159 * radius * radius

类注释示例:

class DataProcessor:
    """用于处理和清洗数据的工具类。

    该类提供了一系列静态方法,用于执行常见的数据清洗任务。

    Attributes:
        batch_size (int): 处理数据时的批次大小。
    """
    def __init__(self, batch_size: int = 100):
        self.batch_size = batch_size

在 PyCharm 中高效实践

PyCharm 提供了强大的功能来简化 Docstring 的编写。

  1. 自动生成模板

    • 在一个函数或类的定义行下方,输入 """'''
    • 按下 Enter (回车)
    • PyCharm 会立即根据函数的签名(参数、返回值等)自动生成一个 Docstring 骨架,您只需填充描述即可
  2. 切换 Docstring 格式

    • 打开 Settings/Preferences (macOS: ⌘, | Windows/Linux: Ctrl+Alt+S)
    • 导航到 Tools → Python Integrated Tools
    • Docstrings 部分,将 Docstring format 从 "reStructuredText" 修改为 "Google" 或其他您喜欢的风格

至此,我们已经将今天讨论的所有核心主题都整理成了文档。希望这些总结对您有所帮助!