据我了解,我应该能够打印可变foo
在下面的代码片段。
from IPython.display import HTML
HTML('''
<script type="text/javascript">
IPython.notebook.kernel.execute("foo=97")
</script>
''')
print(foo)
相反,我看到这个错误信息:
NameErrorTraceback (most recent call last)
<ipython-input-2-91b73ee49ec6> in <module>()
5 </script>
6 ''')
----> 7 print(foo)
NameError: name 'foo' is not defined
我试图用this answer但努力使其发挥作用。
FWIW,这是(按PIP)在Fedora 23上运行哪些先决条件,使这项工作的最新Jupyter代码?
from IPython.display import HTML
HTML('''
<script type="text/javascript">
IPython.notebook.kernel.execute("foo=11")
</script>
''')
from time import sleep
sleep(3)
print(foo)
这个作品是HTML的原因需要一些时间来工作,并在打印的值设置甚至之前。睡眠,3秒的等待时间似乎不够,变量被分配。
这里的问题是,HTML对象是不是在细胞中的最后一个。因此,它是在不显示没有打印任何其他值相同的方式被忽略,除非它是最后一个单元格。如果你的下一个代码执行单元,你将不会看到任何警告窗口。
HTML('''
<script type="text/javascript">
alert("hello")
</script>
''')
print("hello")
确保在单元格中的最后一个对象是HTML对象,你会看到警告窗口。
HTML('''
<script type="text/javascript">
alert("hello")
</script>
''')
这就是为什么安东尼·佩罗工作的例子,它们是分开的细胞。这也应该工作: