当前位置: 首页 > news >正文

python __doc__

在Python中,__doc__ 是一个特殊的内置属性,用于存储模块、类、函数或方法的文档字符串(docstring)。文档字符串是对代码功能的描述,通常位于模块、类或函数的第一行,可以通过 对象.__doc__ 动态访问。

1. 文档字符串的定义方式

文档字符串用三引号(单引号或双引号)包裹,位于代码对象的开头:

模块级文档字符串
"""这是一个示例模块,提供数学计算功能。"""def add(a, b):"""返回两个数的和。"""return a + b
类级文档字符串
class Calculator:"""一个简单的计算器类,支持基本数学运算。"""def add(self, a, b):"""计算并返回两个数的和。参数:a (int/float): 第一个操作数b (int/float): 第二个操作数返回:int/float: 两数之和"""return a + b

2. __doc__ 属性的作用

  • 交互式帮助:在REPL中使用 help(对象) 时,会显示 __doc__ 的内容。
  • 自动生成文档:如Sphinx、Doxygen等工具会提取 __doc__ 生成API文档。
  • 代码自省:运行时动态获取代码对象的说明。
示例:访问文档字符串
def multiply(a, b):"""返回两个数的乘积。"""return a * bprint(multiply.__doc__)  # 输出: "返回两个数的乘积。"

3. __doc__ 的特殊用法

动态修改文档字符串

虽然不常见,但可以在运行时修改 __doc__

def greet(name):return f"Hello, {name}!"greet.__doc__ = "向指定的人打招呼并返回问候语。"
print(greet.__doc__)  # 输出: "向指定的人打招呼并返回问候语。"
模块级文档字符串的快捷方式

在模块文件的第一行使用 __doc__ = "..." 可以直接定义模块文档:

__doc__ = """这是一个示例模块,提供数学计算功能。"""def subtract(a, b):return a - b

4. 文档字符串的规范

推荐遵循 PEP 257 的规范:

  • 单行文档:简洁描述功能,不使用空行。
  • 多行文档:第一行概述,空行后详细描述,可包含参数、返回值、异常等说明。
推荐格式(Google风格)
def divide(a, b):"""计算两个数的商。Args:a (int/float): 被除数b (int/float): 除数(不能为0)Returns:float: 商Raises:ZeroDivisionError: 如果b为0"""if b == 0:raise ZeroDivisionError("除数不能为0")return a / b

5. 与其他语言的对比

  • Java:使用 /** ... */ 注释和Javadoc工具。
  • C++:使用Doxygen风格的 ////** ... */ 注释。
  • Python:直接将文档作为字符串存储在 __doc__ 属性中,无需额外工具即可访问。

总结

__doc__ 是Python中存储文档字符串的特殊属性,它让代码的自描述性更强,并支持动态生成帮助信息。合理使用文档字符串是编写高质量Python代码的重要实践。

http://www.dtcms.com/a/263928.html

相关文章:

  • gateway白名单存储nacos,改成存储数据库
  • leetcode124-二叉树中的最大路径和
  • CPU缓存一致性
  • AI智能体在用户行为数据分析中有哪些应用?
  • 具身多模态大模型在感知与交互方面的综述
  • (十一)Spring WebSocket
  • Ansys Speos | Speos Camera 传感器机器视觉示例
  • vue-35(使用 Jest 和 Vue Test Utils 设置测试环境)
  • 列表元素滚动动画
  • LAN8720 寄存器概览和STM32 HAL库读写测试
  • CSS 安装使用教程
  • FreeRTOS任务切换
  • 力扣网C语言编程题:寻找两个正序数组的中位数
  • RIP 技术深度解析
  • 文心一言开源版测评:能力、易用性与价值的全面解析
  • [创业之路-457]:企业经营层 - 蓝海战略 - 价值创新不仅仅是技术创新
  • Java项目:基于SSM框架实现的智慧养老平台管理系统【ssm+B/S架构+源码+数据库+毕业论文】
  • 大麦基于HarmonyOS星盾安全架构,打造全链路安全抢票方案
  • 【机器学习深度学习】模型微调的基本概念与流程
  • 06会话管理
  • 前端计算机视觉:使用 OpenCV.js 在浏览器中实现图像处理
  • 量化选股策略 聚宽
  • 如何利用Charles中文版抓包工具提升API调试与网络性能
  • 二刷 苍穹外卖day10(含bug修改)
  • 如何使用StartUML绘制类图,用例图,时序图入门
  • 转录组分析流程(二):差异分析
  • MySQL MVCC 详解
  • ChatGPT使用限额记录与插件统计
  • 杭州来未来科技 Java 实习面经
  • [C#] WPF - 自定义样式(Slider篇)