为什么IPython笔记本电脑只能从这段代码中输出一个DIV?

为什么IPython笔记本电脑只能从这段代码中输出一个DIV?,python,ipython-notebook,Python,Ipython Notebook,在IPython笔记本中,我在单元格中输入以下代码: from IPython.display import HTML HTML("""<div>One</div>""") HTML("""<div>Two</div>""") 输出是 3 但如果我输入以下内容: print 1 print 2 print 3 然后我得到这个输出: 1 2 3 有什么区别?当我不使用print语句时,IPython笔记本是否仅评估最后一条语句?或者是每个后续

在IPython笔记本中,我在单元格中输入以下代码:

from IPython.display import HTML
HTML("""<div>One</div>""")
HTML("""<div>Two</div>""")
输出是

3
但如果我输入以下内容:

print 1
print 2
print 3
然后我得到这个输出:

1
2
3
有什么区别?当我不使用
print
语句时,IPython笔记本是否仅评估最后一条语句?或者是每个后续评估都覆盖了上一个吗?

是的,我在这上面找到了一些,而
HTML
实际上是一个类,而不是一个函数

所以正确的代码应该是

from IPython.display import HTML
myhtml = HTML("""<div>One</div><div>Two</div>""") #make the html object
myhtml #display it
您可能不希望在输出中看到所有这些数字

IPython中的规则是:如果代码中的最后一条语句是表达式,则显示其>值。1.2是一对语句,而1,2是一个语句,因此两个值都将>显示

我希望这能解释一些事情。我们很高兴再次做出这样的决定,但多年来一直如此,我认为没有人对此提出异议


对于@Dunno的回答,只需稍加补充:如果您想从单个单元格显示多个
IPython.display.display对象
对象(包括
HTML
对象,还包括图像等),您可以使用
IPython.display.display
功能

例如,您可以执行以下操作:

from IPython.display import HTML, Image, display
display(HTML("""<div>One</div>"""))
display(HTML("""<div>Two</div>"""))
display(Image("http://cdn.sstatic.net/stackoverflow/company/img/logos/so/so-logo.png?v=9c558ec15d8a", format="png"))
从IPython.display导入HTML、图像、显示
显示(HTML(“一个”)
显示(HTML(“两个”)
显示(图像)http://cdn.sstatic.net/stackoverflow/company/img/logos/so/so-logo.png?v=9c558ec15d8a“,format=“png”))

我认为您必须使用一次调用
HTML
函数(即
HTML(““OneTwo”)
),但我可能错了。我在下面编辑了我的答案以解决您的后续问题Great work@Dunno-感谢您找到了答案。Thomas给出了一个非常好的例子来解释我现在有意义的行为。
div1 = """<div>One</div>"""
div2 = """<div>Two</div>"""
myhtml = HTML(div1 + div2)
myhtml
for line in lines:
    f.write(line)  # Returns number of bytes written
from IPython.display import HTML, Image, display
display(HTML("""<div>One</div>"""))
display(HTML("""<div>Two</div>"""))
display(Image("http://cdn.sstatic.net/stackoverflow/company/img/logos/so/so-logo.png?v=9c558ec15d8a", format="png"))