注意
转到末尾 下载完整的示例代码。或通过 JupyterLite 或 Binder 在浏览器中运行此示例。
在脚本中识别函数名称#
这演示了 Sphinx-Gallery 如何识别何时
在代码块中使用函数/方法/属性/对象或实例化类
在文本块中使用 sphinx 标记引用函数/方法/属性/对象/类。
Sphinx-Gallery 检查执行的代码本身以及文本块(例如此块或下面的块)以查找这些引用,并识别它们所属的模块。这意味着,通过在这里编写 numpy.sin
和 numpy.exp
,即使它们没有在代码中使用,它们也会被识别。这在函数返回类(意味着它没有被显式实例化)时尤其有用 - 如果你将它们添加到使用它们的示例的文档块中,它们将被添加到反向引用中。
此功能用于向您的代码添加文档超链接 (向您的示例添加 intersphinx 链接) 以及用于创建迷你画廊 (为 API 文档添加迷你画廊)。
# Code source: Óscar Nájera
# License: BSD 3 clause
import os.path as op # noqa, analysis:ignore
import matplotlib.pyplot as plt
import sphinx_gallery
from sphinx_gallery.backreferences import _make_ref_regex, identify_names
from sphinx_gallery.py_source_parser import split_code_and_text_blocks
filename = "plot_6_function_identifier.py"
if not op.exists(filename):
filename = (
__file__
if "__file__" in locals()
else op.join(op.dirname(sphinx_gallery.__path__[0]), "examples", filename)
)
_, script_blocks = split_code_and_text_blocks(filename)
names = identify_names(script_blocks, _make_ref_regex())
在上面的代码块中,我们使用内部函数 identify_names
从此文件中获取所有已识别的名称及其完整解析的导入路径。然后我们在下面绘制它,其中已识别的名称函数在左侧,完整解析的导入路径在右侧。
fontsize = 12.5
figheight = 3 * len(names) * fontsize / 72
fig, ax = plt.subplots(figsize=(7.5, figheight))
ax.set_visible(False)
for i, (name, obj) in enumerate(names.items(), 1):
fig.text(
0.48,
1 - i / (len(names) + 1),
name,
ha="right",
va="center",
size=fontsize,
transform=fig.transFigure,
bbox=dict(boxstyle="square", fc="w", ec="k"),
)
fig.text(
0.52,
1 - i / (len(names) + 1),
obj[0]["module"],
ha="left",
va="center",
size=fontsize,
transform=fig.transFigure,
bbox=dict(boxstyle="larrow,pad=0.1", fc="w", ec="k"),
)
plt.show()
脚本的总运行时间:(0 分钟 0.732 秒)
估计的内存使用量:176 MB