为了教学目的,我希望有一个IPython笔记本可以显示函数源代码(作为单元格输出),但我想在多个笔记本中引用它。因此,我想以类似于使用%psource 魔法的方式显示函数代码,但要适当地进行语法高亮。
这与此问题类似,但我想将其应用于文件中的单个函数,而不是一次应用于整个文件。
使用上一个问题中的建议,我编写了一个简短的代码,在简单的情况下可以工作:
这与此问题类似,但我想将其应用于文件中的单个函数,而不是一次应用于整个文件。
使用上一个问题中的建议,我编写了一个简短的代码,在简单的情况下可以工作:
def print_source(module, function):
"""For use inside an IPython notebook: given a module and a function, print the source code."""
from inspect import getmembers, isfunction, getsource
from pygments import highlight
from pygments.lexers import PythonLexer
from pygments.formatters import HtmlFormatter
from IPython.core.display import HTML
internal_module = __import__(module)
internal_functions = dict(getmembers(internal_module, isfunction))
return HTML(highlight(getsource(internal_functions[function]), PythonLexer(), HtmlFormatter(full=True)))
两个问题:
- 这个代码片段建议可以通过定义适当的单元格魔法来显示整个函数。是否可以定义适当的单元格魔法来仅显示单个函数,如上所述?
- 是否有一种方法可以在不导入整个模块的情况下完成这个任务,或者有一个更健壮的方式来完成这个任务?