Jupyter Notebook,Python:从函数内调用魔术,而不仅仅是单元格_

时间:2019-07-16 14:20:52

标签: javascript python jupyter-notebook

我正在尝试编写一个库,该库会将一些JavaScript嵌入Jupyter笔记本中。使用%%javascript魔术,代码可以正常工作,但是我想将JavaScript的加载嵌入到库调用中。我发现了这样的帖子:Jupyter Notebook, Python: How to call a magic from within a function?,但仅部分起作用。

以下代码正确运行JavaScript警报:

from IPython.core.magics.display import Javascript
Javascript('alert("hello world")')

但是,以下内容不起作用(什么也没有发生;没有控制台错误):

from IPython.core.magics.display import Javascript

def foo():
    Javascript('alert("hello world")')
foo()

如何在函数中嵌入对Javascript的有效调用?

1 个答案:

答案 0 :(得分:1)

射击。在发布到SO之后,您的思想在 上能以多快的速度运转,真是令人惊讶。

对于后代来说,Javascript函数与Jupyter配合使用,方法是返回必要的代码。为了使我的示例正常工作,唯一的更改是使foo返回Javascript(...)的结果。我认为这是通过与笔记本的某种神奇连接而在函数内完成的工作的无效回报。不是这样! (当然,如果它是静态类型的,我会知道这一点并为自己节省了一些时间,但是我离题了。)嗯,正确的代码是:

from IPython.core.magics.display import Javascript

def foo():
    return Javascript('alert("hello world")')
foo()