教育目的で、関数のソース コードを (セルからの出力として) 表示する 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)))
2 つの質問:
- この要点は、適切なセルマジックを定義することで関数全体を表示できることを示唆しています。上記のように、適切なセル マジックを定義して単一の関数だけを表示することは可能ですか?
- モジュール全体をインポートせずにこれを行う方法、またはこれを行うより堅牢な方法はありますか?