说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gr99123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
在函数或者类的定义中,第一条语句出现的字符串字面值会被转换为函数的 __doc__
属性,也就是该函数的 docstring。文档字符串是写在源代码中的字符串文字,它们充当代码片段的注释或文档。文档字符串用于描述类、函数,有时甚至是文件。
准确地说,docstring 是作为类、函数或模块之内的第一个表达式出现的字符串字面值。它在代码执行时会被忽略,但会被解释器识别并放入所在类、函数或模块的 __doc__
属性中。由于它可用于代码内省,因此是对象存放文档的规范位置。
docstring 是一种特殊类型的注释,可以把它放在一个函数或类定义之后,也可放在文件的开头;其功能是说明函数、类或者模块是做什么的。docstring 可以用三个引号、单引号或者双引号括起来。
以下是 docstring 的编写示例:
def my_func():
"""docstring-test
line1
line2
line3
"""
类的:
class MyClass:
"""docstring-test
line1
line2
line3
"""
这些字符串将写入对象的 __doc__
属性,它是一个字符串:
print(my_func.__doc__)
# ...
print(type(MyClass.__doc__))
# <class 'str'>
另外还可以写在模块(Python文件)开头,用于描述文件的背景、作用、作者、时间、功能等信息。
文档字符串充当有关代码片段的元数据。一个文档字符串包含所有关于它们所描述内容的相关信息。
模块:
对于一个类,它包含以下信息:
对于函数,它包含有关以下内容的详细信息:
这些都在各个模块的官方 API 文档中看到。可以自成文挡,利用工具可以自动解析输出程序的代码文档,如 docstring 可以用内置模块 pydoc 来生成文档。
def func_rest(param1, param2):
"""Summary line.
:param param1: Description of param1
:type param1: int
:param param2: Description of param2
:type param2: str
:returns: Description of return value
:rtype: bool
"""
return True
def func_numpy(param1, param2):
"""Summary line.
Extended description of function.
Parameters
----------
param1 : int
Description of param1
param2 : str
Description of param2
Returns
-------
bool
Description of return value
"""
return True
def func_google(param1, param2):
"""Summary line.
Extended description of function.
Args:
param1 (int): Description of param1
param2 (str): Description of param2
Returns:
bool: Description of return value
"""
return True
以下是 pandas 的 Series 模块的文档字符串(一般写构造方法的参数和功能介绍):
class Series(base.IndexOpsMixin, NDFrame): # type: ignore[misc]
"""
One-dimensional ndarray with axis labels...
Parameters
----------
data : array-like, Iterable, dict, or scalar value
Contains data stored in Series...
index : array-like or Index (1d)
Values must be hashable and have the same...
dtype : str, numpy.dtype, or ExtensionDtype, optional
Data type for the output Series...
See the :ref:`user guide <basics.dtypes>` ..
name : Hashable, default None
The name to give to the Series.
copy : bool, default False
Copy input data... See examples.
Notes
-----
Please reference the :ref:`User Guide <basics.series>` for more information.
Examples
--------
Constructing Series from a dictionary with an Index specified
>>> d = {'a': 1, 'b': 2, 'c': 3}
>>> ser = pd.Series(data=d, index=['a', 'b', 'c'])
>>> ser
a 1
b 2
c 3
dtype: int64
>>> r = np.array([1, 2])
>>> ser = pd.Series(r, copy=False)
>>> ser.iloc[0] = 999
>>> r
array([999, 2])
>>> ser
0 999
1 2
dtype: int64
Due to input data type the Series has a `view` on
the original data, so
the data is changed as well.
"""
可以在模块中直接对 __doc__
进行赋值,进行设置,如在 py 文件中:
# module level doc-string
__doc__ = """
pandas - a powerful data analysis and manipulation library for Python
=====================================================================
**pandas** is a Python package providing fast, flexible, and expressive data
structures designed to make working with "relational" or "labeled" data both
easy and intuitive. It aims to be the fundamental high-level building block for
doing practical, **real world** data analysis in Python. Additionally, it has
the broader goal of becoming **the most powerful and flexible open source data
analysis / manipulation tool available in any language**. It is already well on
its way toward this goal.
...
'''
可以编写 doctest 测试用例,后继进行测试,如:
def add(a, b):
'''
>>> add(1, 2)
3
>>> add(5, 10)
10
'''
return a * b
if __name__ == '__main__':
import doctest
doctest.testmod()
见 https://docs.python.org/zh-cn/3/library/doctest.html
几乎所有的 IDE 都会在选中或者移动到名称上显示 docstring。
在 Jupyter 中,将光标对准对象的函数等,用 shift+tab在工具提示中显示 docstring。并且,如果在按住shift的状态下连续打 tab,则详细显示、分割显示和最大化显示。
格式字符串字面值中,即便未包含表达式,格式字符串字面值也不能用作文档字符串。
def foo():
f"Not a docstring"
# foo.__doc__ is None
True
更新时间:2023-09-06 19:28:55 标签:python 注释 字符串