在 Jupyter 实验室/笔记本中突出显示检查函数的源代码

Posted

技术标签:

【中文标题】在 Jupyter 实验室/笔记本中突出显示检查函数的源代码【英文标题】:Highlight source code of inspected functions in Juptyer lab/notebook 【发布时间】:2019-05-01 08:05:51 【问题描述】:

在使用 Jupyter 实验室/笔记本时,我一直在使用以下函数来检查函数源代码:

def source(function):
    print(inspect.getsource(function))

对于较短的代码,这很好,但在某些时候代码突出显示会很方便。因此我研究了使用 Pygments:

def source2(function):
    from IPython.core.display import html, display
    from pygments import highlight
    from pygments.lexers import PythonLexer
    from pygments.formatters import HtmlFormatter
    code = inspect.getsource(function)
    html = highlight(code, PythonLexer(), HtmlFormatter(style='colorful'))
    display(HTML(html))

虽然这似乎会生成中间 HTML 代码并正确显示,但代码保持简单(没有突出显示)。中间字符串变量“html”的内容如下。

'<div class="highlight">
 <pre><span>
 </span><span class="k">def</span>
 <span class="nf">source</span>
 <span class="p">(</span>
 <span class="n">function</span>
 <span class="p">):</span>\n
 <span class="k">print</span>
 <span class="p">(</span>
 <span class="n">inspect</span>
 <span class="o">.</span>
 <span class="n">getsource</span>
 <span class="p">(</span>
 <span class="n">function</span>
 <span class="p">))</span>\n
 </pre></div>\n'

我相信我可能只是缺少一个 CSS 文件?

额外问题(稍后可能会拆分):有没有办法通过右键单击上下文菜单或 Jupyter 实验室/笔记本中的快捷方式/热键在函数上使用它?

【问题讨论】:

【参考方案1】:

这个对this question 的回答建议添加以下display 调用来插入样式:

display(HTML("""
<style>
pygments_css
</style>
""".format(pygments_css=HtmlFormatter().get_style_defs('.highlight'))))

【讨论】:

以上是关于在 Jupyter 实验室/笔记本中突出显示检查函数的源代码的主要内容,如果未能解决你的问题,请参考以下文章

如何检查您是不是在 Jupyter 笔记本中

Jupyter实验室窗口没有正确显示

突出显示 Jupyter 单元中的部分代码

Atom / Sublime喜欢Jupyter中的Multiple选择

如何更改 IPython(Jupyter) 中代码的突出显示颜色样式?

如何在 jupyter 实验室中使用 FileUpload 小部件?