我正在使用 reStructuredText 来记录我的代码,以便通过 epydoc 获得漂亮的离线 HTML 页面。
结果是辉煌的。唯一的缺点是,当我使用 Python 交互式 shell 时,help() 函数不会解析文档字符串中的 reST 元数据,而是按原样显示整个内容。
有没有办法让 help() 对文档字符串进行一些最小的解析?
我不希望渲染斜体字体或超链接,但至少要进行一些最小的清理以提高可读性。
我正在使用 reStructuredText 来记录我的代码,以便通过 epydoc 获得漂亮的离线 HTML 页面。
结果是辉煌的。唯一的缺点是,当我使用 Python 交互式 shell 时,help() 函数不会解析文档字符串中的 reST 元数据,而是按原样显示整个内容。
有没有办法让 help() 对文档字符串进行一些最小的解析?
我不希望渲染斜体字体或超链接,但至少要进行一些最小的清理以提高可读性。
该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 中执行操作时要小心,因为您在此处所做的任何事情都可能会影响您的整个解释器会话(以及每个解释器会话),这有时会导致意想不到的后果。