Đối với mục đích giảng dạy Tôi muốn một sổ tay IPython hiển thị (như đầu ra từ một ô) mã nguồn chức năng, nhưng tôi muốn có thể tham khảo điều này trong nhiều sổ ghi chép. Do đó, tôi muốn hiển thị mã chức năng, theo cách tương tự để sử dụng ma thuật % psource, nhưng cú pháp thích hợp được tô sáng.Cách hiển thị mã nguồn của một chức năng gói trong sổ tay IPython
Đây là câu hỏi tương tự với this question, nhưng tôi muốn có thể áp dụng nó vào một hàm duy nhất trong một tệp, thay vì tệp hoàn chỉnh cùng một lúc.
Sử dụng những gợi ý từ câu hỏi trước tôi bị hack một mã ngắn mà làm việc trong các trường hợp đơn giản:
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)))
Hai câu hỏi:
- This gist cho thấy cho thấy toàn bộ chức năng có thể được thực hiện bằng cách định nghĩa ma thuật tế bào thích hợp. Có thể xác định một ma thuật tế bào thích hợp để chỉ hiển thị một hàm duy nhất, như trên không?
- Có cách nào để thực hiện việc này mà không cần nhập toàn bộ mô-đun hay cách mạnh mẽ hơn để thực hiện việc này không?