不用装插件也能隐藏,但效果和场景不同:%%capture静默单个cell输出,HTML+JS控制全局代码显示,nbextension提供按钮式交互折叠;选择取决于使用场景——报告、演示或开发调试。

直接回答:不用装插件也能隐藏,但效果和场景不同——%%capture 静默单个 cell 输出,HTML + JavaScript 控制全局代码显示,nbextension 提供按钮式交互折叠。选哪种,取决于你是在写报告、做演示,还是日常开发调试。
用 %%capture 临时屏蔽单个 cell 的输出
适合调试时跳过冗长日志或中间 print,不改变代码可见性,只收走 stdout/stderr。
-
%%capture必须放在 cell 最开头,且只能用于 code cell - 加参数可保留输出供后续读取:
%%capture captured_output -q(-q表示 quiet,不显示 warning) - 捕获后不能直接用
print(captured_output)查看,得调captured_output.stdout或captured_output.show() - 注意:它不隐藏代码本身,只吃掉输出;导出 HTML/PDF 时仍会显示该 cell 的代码块
用 HTML + JavaScript 插入切换按钮(纯前端控制)
适合生成交付用 HTML 报告,点击按钮一键收起所有输入框,对 notebook 编辑过程无影响。
- 在任意 cell 中运行以下代码即可生效:
from IPython.display import HTML
HTML('''<script>
code_show = true;
function code_toggle() {
if (code_show) {
$('div.input').hide();
} else {
$('div.input').show();
}
code_show = !code_show;
}
$(document).ready(code_toggle);
</script>
<form action="javascript:code_toggle()">
<input type="submit" value="Click here to toggle on/off the raw code.">
</form>''')
- 这个脚本只对当前 notebook 生效,导出为 HTML 后按钮依然可用
- 但它对 PDF 导出无效(LaTeX 不执行 JS),且刷新页面后状态重置
- 若想默认隐藏,把
code_show = true改成false,并删掉$(document).ready(code_toggle);
用 nbextension 实现可视化折叠(推荐日常开发)
真正意义上“折叠”某个 cell,左边出现小箭头,点一下收起/展开代码+输出,不影响其他 cell。
- 需要先安装:
jupyter contrib nbextensions,再启用Collapsible Headings或Hide Input -
Hide Input只隐藏代码,保留输出;Collapsible Headings支持按 Markdown 标题层级折叠整组 cell - 安装后重启 notebook,工具栏会出现新按钮,也可右键 cell 左侧 gutter 区域直接折叠
- ⚠️ 注意:这些设置不随 .ipynb 文件保存,换机器或重装 Jupyter 就得重配;导出时也不继承折叠状态
导出时彻底去掉代码(只留输出和 markdown)
面向非技术人员交付时最干净的做法,适用于 HTML/PDF 导出,但编辑时看不到代码 —— 所以只建议放最后一步。
- 在 notebook 开头 cell 运行这段:
from IPython.display import HTML
HTML('<script>$(document).ready(function() { $(".input_area").hide(); $(".prompt").hide(); });</script>')
- 或者更稳妥的写法(兼容 notebook 和 lab):
from IPython.display import HTML, display
display(HTML('''
<style>
.jp-InputArea, .jp-CodeCell .jp-InputPrompt { display: none !important; }
</style>
'''))
- 导出命令要加参数:
jupyter nbconvert --to html --no-input your_notebook.ipynb,--no-input是关键 - PDF 导出同理:
jupyter nbconvert --to pdf --no-input your_notebook.ipynb - 这个方式不依赖 JS,导出结果稳定,但你在 notebook 里就真看不见代码了,慎用于开发中
最容易被忽略的一点:所有基于 JavaScript 的隐藏方案,在导出为 PDF 时基本失效;而 --no-input 这种命令行参数方式,又无法在 notebook 界面内实时预览效果。实际用的时候,得提前想清楚——你是要「编辑时省眼」,还是「交付时干净」,两者策略完全不同。


















