gpt4 book ai didi

python - 为什么 IPython notebook 从这段代码中只输出一个 DIV?

转载 作者:行者123 更新时间:2023-11-28 20:22:58 25 4
gpt4 key购买 nike

在 IPython 笔记本中,我在一个单元格中输入了这段代码:

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

为什么输出单元格只包含第二个div?

编辑。 @Dunno 已经展示了我如何将所有 html 放入一个 HTML() 并且呈现两个元素,但我仍然不明白发生了什么。这是一个更一般的情况:

当我在输入单元格中输入这个时:

1
2
3

输出是

3

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

print 1
print 2
print 3

然后我得到这个输出:

1
2
3

有什么区别?当我不使用 print 语句时,IPython notebook 是否只评估最后一条语句?还是每个后续评估都会覆盖之前的评估?

最佳答案

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

所以正确的代码应该是

from IPython.display import HTML
myhtml = HTML("""<div>One</div><div>Two</div>""") #make the html object
myhtml #display it

现在您的代码只显示一个 div 的原因就明白了。

要显示多个部分,请创建多个包含 html 的变量,然后在对 HTML 的一次调用中将它们连接起来。

div1 = """<div>One</div>"""
div2 = """<div>Two</div>"""
myhtml = HTML(div1 + div2)
myhtml

编辑:

I opened a ticket在 ipython 的 github 配置文件上查看它是否是错误或仅显示最后一行语句的功能。事实证明,这是计划好的行为:

引用 Thomas Kluyver:

This is deliberate, because if you call something in a for loop that returns a value:

for line in lines:
f.write(line) # Returns number of bytes written

You probably don't want to see all those numbers in the output.

The rule in IPython is: if the last statement in your code is an expression, we display its >value. 1;2 is a pair of statements, whereas 1,2 is one statement, so both values will >display.

I hope that explains things a bit. We're happy to revisit decisions like this, but it's >been this way for years, and I don't think anyone has taken issue with it.

关于python - 为什么 IPython notebook 从这段代码中只输出一个 DIV?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21918230/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com