介绍
在这个 Lab 中,你将学习使用 docstrings(文档字符串)来记录 Python 代码的重要性。我们将探讨如何使用 help() 函数和 __doc__ 属性来访问内置函数的现有 docstrings。
此外,你将获得实践经验,为自定义函数编写自己的 docstrings 并验证其可访问性,从而使你的代码对你自己和他人来说更易于理解和维护。
在这个 Lab 中,你将学习使用 docstrings(文档字符串)来记录 Python 代码的重要性。我们将探讨如何使用 help() 函数和 __doc__ 属性来访问内置函数的现有 docstrings。
此外,你将获得实践经验,为自定义函数编写自己的 docstrings 并验证其可访问性,从而使你的代码对你自己和他人来说更易于理解和维护。
help() 访问文档Docstring(文档字符串)是出现在模块、函数、类或方法定义中的第一个语句的字符串字面量。它用于记录代码的功能。Python 的内置 help() 函数是一个出色的工具,可以以干净、易读的格式查看此文档。help() 函数专为交互式使用而设计。
让我们从查看内置 print() 函数的文档开始。
首先,在 WebIDE 中打开一个终端。你可以通过点击屏幕顶部的 Terminal 菜单并选择 New Terminal 来实现。
在终端中,通过输入以下命令并按 Enter 键来启动 Python 交互式 shell:
python
你将看到 Python 提示符 (>>>)。现在,使用 help() 函数获取关于 print() 的信息:
help(print)
终端将显示 print 函数的文档。
Help on built-in function print in module builtins:
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file: a file-like object (stream); defaults to the current sys.stdout.
sep: string inserted between values, default a space.
end: string appended after the last value, default a newline.
flush: whether to forcibly flush the stream.
(END)
此输出解释了该函数的功能、它接受的参数及其默认值。按 q 键退出帮助查看器并返回到 Python 提示符。
现在,通过输入以下命令退出 Python 交互式 shell:
exit()
__doc__ 访问原始 Docstring虽然 help() 非常适合交互式使用,但你也可以使用对象的特殊 __doc__ 属性以编程方式访问其原始 docstring。此属性将 docstring 存储为纯字符串。
让我们看看实际操作。在 WebIDE 左侧的文件浏览器中,找到并打开名为 access_docstring.py 的文件。
将以下 Python 代码添加到文件中。此代码将打印内置 len() 函数的 docstring。
## This script prints the docstring of the len() function.
print(len.__doc__)
保存文件(你可以使用 Ctrl+S 快捷键)。
现在,返回终端并使用以下命令运行脚本:
python access_docstring.py
输出将是 len 函数的原始 docstring。
Return the number of items in a container.
如你所见,__doc__ 直接为你提供了文档的字符串内容,这对于处理文档的自定义工具或脚本非常有用。
记录你自己的函数是编写清晰且可维护代码的基本实践。一个好的 docstring 应解释函数的目标、其参数以及它返回的内容。
让我们编写一个函数并对其进行文档记录。从文件浏览器中打开文件 my_function.py。
首先,将以下函数定义添加到文件中:
def greet(name, greeting="Hello"):
print(f"{greeting}, {name}!")
现在,让我们添加一个 docstring。docstring 应紧跟在 def 语句之后,并与函数的代码保持相同的缩进级别。我们将使用三引号 ("""...""") 来创建多行 docstring。
修改 my_function.py 以包含 docstring。我们还将添加一行代码来打印 docstring,以验证它是否正常工作。
def greet(name, greeting="Hello"):
"""Greets a person with a given message.
Args:
name (str): The name of the person to greet.
greeting (str, optional): The greeting message. Defaults to "Hello".
"""
print(f"{greeting}, {name}!")
## Print the docstring of our greet function
print(greet.__doc__)
保存文件。现在,从你的终端运行脚本:
python my_function.py
你将看到你的自定义 docstring 打印到控制台。
Greets a person with a given message.
Args:
name (str): The name of the person to greet.
greeting (str, optional): The greeting message. Defaults to "Hello".
这确认你已成功记录了你的函数,并且可以使用 __doc__ 属性访问其 docstring。
help() 用于你的自定义函数在上一个步骤中,我们使用 __doc__ 访问了自定义 docstring。现在,让我们使用 help() 函数来查看我们文档更精致、更友好的视图,就像我们对内置 print() 函数所做的那样。
我们将把 greet 函数导入 Python 交互式 Shell 中以使用 help()。
在你的终端中,再次启动 Python Shell:
python
一旦看到 >>> 提示符,就从你的 my_function 模块(文件名 my_function.py 被视为名为 my_function 的模块)导入 greet 函数。
from my_function import greet
现在,使用 help() 查看你的 greet 函数的文档:
help(greet)
你将看到根据你的 docstring 生成的格式良好的输出。
Help on function greet in module my_function:
greet(name, greeting='Hello')
Greets a person with a given message.
Args:
name (str): The name of the person to greet.
greeting (str, optional): The greeting message. Defaults to "Hello".
(END)
注意 help() 是如何自动包含函数签名(greet(name, greeting='Hello'))并格式化 docstring 以便轻松阅读的。这就是编写良好 docstring 如此有价值的原因——它直接与 Python 的内置帮助系统集成。
按 q 退出帮助查看器,然后输入 exit() 离开 Python Shell。
在这个实验中,你学习了使用 docstring 文档化 Python 代码的基础知识。你练习了使用交互式 help() 函数和 __doc__ 属性来访问内置函数的文档。然后,你通过为自定义函数编写单行和多行 docstring,遵循标准约定,应用了这些知识。最后,你验证了你的自定义文档可以通过 __doc__ 和 Python 的 help() 系统进行访问,这是创建可读、可重用和可维护代码的关键技能。