如何为日志模块的字典参数编写规范的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
四、常见错误修正示例
错误写法:仅说明字典参数类型,未明确内部结构
stream_logger : dict 控制台日志配置修正后:
stream_logger : dict 控制台日志处理器的配置字典,包含以下键: - level : {'DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'} 控制台日志的输出级别,仅允许指定的字符串值。错误写法:未标注参数取值范围
level : str 日志级别修正后:
level : {'DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'} 日志的输出级别,仅允许指定的字符串值。
内容的提问来源于stack exchange,提问作者smoochy
相关产品推荐
相关产品推荐

