小编Ian*_*Ian的帖子

如何在IPython笔记本中显示包函数的源代码

出于教学目的,我想要一个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)))
Run Code Online (Sandbox Code Playgroud)

两个问题:

  1. 这个要点表明,通过定义适当的细胞魔法可以显示整个功能.是否有可能定义一个合适的单元魔术来显示单个函数,如上所述?
  2. 有没有一种方法可以在不导入整个模块的情况下执行此操作,或者采用更强大的方式执行此操作?

python ipython ipython-notebook ipython-magic

11
推荐指数
1
解决办法
2524
查看次数

在ipython-notebook的Markdown单元格中展开变量

在ipython-notebook中的markdown单元格中,我希望能够自动扩展变量.可以这样做吗?

例如,请考虑以下代码

from IPython.core.display import HTML
from markdown import markdown

base_url = "https://stackoverflow.com/"
markdown_string = "Two categories at [stackoverflow]({0}) are "\
                  "[ipython-notebook]({0}questions/tagged/ipython-notebook) and "\
                  "[matplotlib]({0}questions/tagged/matplotlib).".format(base_url)
HTML("<p>{}</p>".format(markdown(markdown_string)))
Run Code Online (Sandbox Code Playgroud)

这将产生具有正确链接的输出单元,全部相对于base_url,as

stackoverflow的两个类别是ipython-notebookmatplotlib.

我想要的是能够直接在单元格中键入markdown,引用预定义的变量.这可能吗?

ipython-notebook

8
推荐指数
2
解决办法
7684
查看次数

标签 统计

ipython-notebook ×2

ipython ×1

ipython-magic ×1

python ×1