在Jupyter笔记本中使用Ipython.core.display中的Javascript时理解名称空间

在Jupyter笔记本中使用Ipython.core.display中的Javascript时理解名称空间,javascript,ipython,jupyter-notebook,Javascript,Ipython,Jupyter Notebook,我很难理解IPython中提供的Javascript函数的名称空间 from IPython.core.display import display, Javascript display(Javascript(u""" var variable = 'Hello' console.log(variable) """)) [output] Hello 上面的操作似乎很好,但下面的操作会抛出一个错误 display(Javascript(u""" var variable = 'Hello' "

我很难理解IPython中提供的
Javascript
函数的名称空间

from IPython.core.display import display, Javascript
display(Javascript(u"""
var variable = 'Hello'
console.log(variable)
"""))
[output]
Hello
上面的操作似乎很好,但下面的操作会抛出一个错误

display(Javascript(u"""
var variable = 'Hello'
"""))
display(Javascript(u"""
console.log(variable)
"""))
[output]
Javascript error adding output!
ReferenceError: variable is not defined
See your browser Javascript console for more details.
如果我想将数据保存到一个函数中的变量中,比如ajax调用,然后在jupyter笔记本的单独单元格中从另一个函数中使用它,那么最好的做法是什么?我当前的实现使用
窗口
来存储变量

display(Javascript(u"""
var variable = 'Hello'
Window.variable = variable
"""))
display(Javascript(u"""
console.log(Window.variable)
"""))
[output]
Hello
另一个相关问题-即使将其存储在
窗口中
,我也无法从javascript控制台访问该变量。我还希望从javascript控制台访问它进行调试,但希望继续使用最佳实践。建议

编辑:

下面的方法似乎很有效

display(HTML(u"""

<script>
variable='Hello'
</script>
"""))

display(HTML(u"""

<script>
console.log(variable)
</script>
"""))
显示(HTML(u)”
变量='Hello'
"""))
显示(HTML(u)
console.log(变量)
"""))

每个JS输出在一个函数名称空间中分别运行,因此在完成时,由一个设置的变量将被丢弃。如果您需要一个全局变量,将其附加到
窗口
是一种合理的方法。您还可以创建一个具有唯一ID的HTML元素并将数据附加到该元素。感谢您的解释!