6

我正在使用 reStructuredText 来记录我的代码,以便通过 epydoc 获得漂亮的离线 HTML 页面。

结果是辉煌的。唯一的缺点是,当我使用 Python 交互式 shell 时,help() 函数不会解析文档字符串中的 reST 元数据,而是按原样显示整个内容。

有没有办法让 help() 对文档字符串进行一些最小的解析?

我不希望渲染斜体字体或超链接,但至少要进行一些最小的清理以提高可读性。

4

1 回答 1

4

help()函数由模块添加到内置命名空间中site,您可以通过在路径上的某处创建sitecustomize.py模块来自定义该模块(显然它通常保存在站点包中)。

然后在sitecustomize.py文件中添加您想要的任何自定义。

您可以通过以下几种方式处理:

如果要更改help()函数本身的(明显)行为,请将帮助函数包装在装饰器中,例如:

def help_wrapper(func):
    def inner(*args):
        results = func(*args)
        return your_cleanup_function_here(results)
help = help_wrapper(help)

我个人更喜欢稍微不同的解决方案,因为没有人知道你的清理函数会做什么来帮助输出不是用 RestructuredText 编写的。

所以我只想创建一个包装函数:

def my_help(*args):
    return your_cleanup_function_here(help(*args))

这样,help()如果您需要,您仍然可以访问原始功能。

警告:在 sitecustomize.py 中执行操作时要小心,因为您在此处所做的任何事情都可能会影响您的整个解释器会话(以及每个解释器会话),这有时会导致意想不到的后果。

于 2011-02-10T20:58:11.170 回答