Do celów dydaktycznych chcę mieć notes IPython, który wyświetla (jako wynik z komórki) kod źródłowy funkcji, ale chcę mieć możliwość odniesienia się do tego w wielu notatnikach. Dlatego chciałbym wyświetlić kod funkcji, podobnie jak przy użyciu magii, ale odpowiednio podświetloną składnię.Jak wyświetlić kod źródłowy funkcji pakietu w notesie IPython
To jest podobne pytanie do this question, ale chcę mieć możliwość zastosowania go do pojedynczej funkcji w pliku, a nie do kompletnego pliku naraz.
Korzystanie sugestię z poprzednim pytaniu I hacked krótkiego kodu, który działa w prostych przypadkach:
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)))
dwa pytania:
- This gist sugeruje, że pokazując całą funkcję można zrobić poprzez zdefiniowanie odpowiednia magia komórki. Czy można zdefiniować odpowiednią magię komórki, aby pokazać tylko jedną funkcję, jak powyżej?
- Czy można to zrobić bez importowania całego modułu lub bardziej niezawodnego sposobu wykonania tego?