如何让从函数中调用的IPython display功能正常工作
问题原因
在Jupyter Notebook、JupyterLab等IPython内核的交互环境中,默认只有单元格运行结束后最后一个表达式的返回值会被自动识别并渲染。你给出的示例代码仅在函数内部创建了IPython.display.HTML实例,既没有主动触发渲染逻辑,也没有将实例返回至单元格顶层作用域,因此不会产生任何渲染结果。
解决方法
方法1:主动调用display方法触发渲染(推荐)
直接调用IPython.display.display方法即可主动让环境渲染指定的HTML对象,不依赖返回值逻辑,同时支持单次函数调用输出多个HTML内容:
import IPython def foo(): IPython.display.display(IPython.display.HTML('<b>FOOBAR</b>')) foo() # 可正常渲染粗体的FOOBAR
同个函数内输出多段HTML的示例:
def render_multi_content(): IPython.display.display(IPython.display.HTML('<h3>测试标题</h3>')) IPython.display.display(IPython.display.HTML('<p style="color: green">带绿色样式的测试段落</p>')) render_multi_content()
你也可以提前导入需要的方法简化代码写法:
from IPython.display import display, HTML def foo(): display(HTML('<b>FOOBAR</b>')) foo()
方法2:将HTML对象作为函数返回值
把创建好的HTML对象作为函数返回值,只要调用函数的语句处于单元格最后一行,就会被环境自动识别渲染:
import IPython def foo(): return IPython.display.HTML('<b>FOOBAR</b>') foo() # 处于单元格最后一行的返回值会被自动渲染
内容的提问来源于stack exchange,提问作者Maxim
相关产品推荐
相关产品推荐

