You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为日志模块的字典参数编写规范的NumPy风格Docstring?

NumPy风格日志模块Docstring规范验证与指导

一、Docstring正确性验证逻辑

如果你的Docstring包含以下核心要素,基本符合NumPy风格的规范要求:

  • 清晰的函数功能概述(1-2句话说明核心作用)
  • 每个参数的类型、含义明确说明
  • 字典参数的内部键、值类型及可选取值范围清晰标注
  • 返回值的类型与含义说明
  • 可选但推荐的异常触发条件、使用示例

若你的写法缺失上述任意部分(比如未明确字典参数的可选值、参数类型标注模糊),则需要补充调整。

二、规范要点详解

1. 标准结构要求

NumPy风格Docstring需遵循固定结构,确保可读性:

  • 开头概述:直接说明函数的核心功能,避免冗余
  • Parameters:逐个参数拆解说明,对于字典类型参数,需明确其内部必填/可选键、对应值的类型及限制
  • Returns:明确返回值的类型和实际用途
  • Raises:列出函数可能抛出的异常及触发场景(可选但推荐)
  • Examples:提供可运行的使用示例,降低使用者上手成本

2. 字典参数的特殊处理

针对你场景中带取值限制的字典参数,需做到:

  • 列出字典的所有必填键和可选键
  • 对有固定取值范围的键,用{'值1', '值2', ...}格式明确标注允许的字符串
  • 标注可选键的默认值(如果有)

3. 细节优化注意

  • 参数类型标注要精准:比如logger_name需明确为str,避免泛泛标注object
  • 取值限制要绝对清晰:直接列出所有允许的字符串值,不使用模糊描述
  • 语言简洁:用最少的文字传递关键信息,避免冗余表述

三、示例参考(符合规范的Docstring)

import logging

def create_logger(logger_name: str, stream_logger: dict, file_logger: dict) -> logging.Logger:
    """创建并配置支持控制台、文件双输出的Logger实例。

    根据传入的配置字典,分别初始化控制台日志处理器和文件日志处理器,
    返回配置完成的Logger对象,可直接用于日志输出。

    Parameters
    ----------
    logger_name : str
        Logger的唯一标识名称,用于区分不同模块的日志来源。
    stream_logger : dict
        控制台日志处理器的配置字典,包含以下键:
        - level : {'DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'}
            控制台日志的输出级别,仅允许指定的字符串值。
        - format : str, optional
            日志输出格式字符串,默认值为'%(asctime)s - %(name)s - %(levelname)s - %(message)s'。
    file_logger : dict
        文件日志处理器的配置字典,包含以下键:
        - level : {'DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'}
            文件日志的输出级别,仅允许指定的字符串值。
        - filename : str
            日志文件的保存路径及文件名(必填)。
        - format : str, optional
            日志输出格式字符串,默认同控制台日志格式。
        - max_bytes : int, optional
            单个日志文件的最大字节数,超过后自动分割,默认无限制。
        - backup_count : int, optional
            保留的日志备份文件数量,默认值为0(不保留备份)。

    Returns
    -------
    logging.Logger
        配置完成的Logger对象,可直接调用info/debug等方法输出日志。

    Raises
    ------
    ValueError
        当字典参数中的level值不在允许范围内时触发。
    FileNotFoundError
        当file_logger指定的filename路径不存在且无法创建时触发。

    Examples
    --------
    >>> stream_config = {'level': 'INFO'}
    >>> file_config = {'level': 'DEBUG', 'filename': 'app_run.log'}
    >>> my_logger = create_logger('user_service', stream_config, file_config)
    >>> my_logger.info('用户服务启动成功')
    """
    # 函数实现逻辑(略)
    pass

四、常见错误修正示例

  1. 错误写法:仅说明字典参数类型,未明确内部结构

    stream_logger : dict
        控制台日志配置
    

    修正后:

    stream_logger : dict
        控制台日志处理器的配置字典,包含以下键:
        - level : {'DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'}
            控制台日志的输出级别,仅允许指定的字符串值。
    
  2. 错误写法:未标注参数取值范围

    level : str
        日志级别
    

    修正后:

    level : {'DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'}
        日志的输出级别,仅允许指定的字符串值。
    

内容的提问来源于stack exchange,提问作者smoochy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 22:42:31