在脚本中识别函数名称#

这演示了 Sphinx-Gallery 如何识别何时

  1. 在代码块中使用函数/方法/属性/对象或实例化类

  2. 在文本块中使用 sphinx 标记引用函数/方法/属性/对象/类。

Sphinx-Gallery 检查执行的代码本身以及文本块(例如此块或下面的块)以查找这些引用,并识别它们所属的模块。这意味着,通过在这里编写 numpy.sinnumpy.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()
plot 6 function identifier

脚本的总运行时间:(0 分钟 0.732 秒)

估计的内存使用量:176 MB

由 Sphinx-Gallery 生成的画廊