jupyter notebook 本身不提供原生「按 cell 隐藏代码」功能,但可通过快捷键(l/shift+l)临时折叠、nbextensions 的 hide_input_all 插件全局控制、或 html/js 脚本添加切换按钮实现;导出时隐藏需插件配合模板或 --no-input 参数。

直接说结论:Jupyter Notebook 本身不提供原生的「按 cell 隐藏代码」功能,但有三种主流方式可实现——快捷键临时折叠、nbextensions 插件全局控制、HTML/JS 脚本定制化开关。选哪种,取决于你是否需要导出时也隐藏、是否要对单个 cell 独立操作、以及是否愿意装插件。
用快捷键快速折叠当前 cell(最轻量)
不需要任何配置,适合临时查看输出或演示时快速收起某一段代码。
-
L(大写 L):在 command 模式下按,只隐藏当前 cell 的输入区域(div.input),输出和 markdown 不受影响 -
Shift+L:隐藏所有 cell 的输入区域(注意:这是全局切换,刷新后重置) - ⚠️ 注意:
L折叠后,cell 左侧会出现灰色竖条;再次按L可展开;但导出为 HTML/PDF 时,这个状态不会保留
用 nbextensions 的 hide_input_all 插件(推荐长期使用)
如果你经常要交付干净报告、或希望一键隐藏全部代码输入(同时保留输出),这个插件最稳定可靠。
- 先确保已安装
jupyter_contrib_nbextensions:运行pip install jupyter_contrib_nbextensions && jupyter contrib nbextension install --user - 启动
jupyter notebook,打开http://localhost:8888/nbextensions - 找到并启用
Hide Input All(不是Hidden Input,后者只对当前 cell 生效) - 启用后,工具栏出现一个「
Hide Input」按钮,点一下就隐藏全部代码输入;再点恢复 - ✅ 导出为 HTML 时,只要模板支持(如
basic或full),隐藏状态会被保留;PDF 导出需额外配置--no-input参数
用 HTML/JS 脚本加 toggle 按钮(适合分享给他人)
如果目标是让别人打开 notebook 就能自己控制显隐,且不依赖插件,这段脚本最实用。
- 在 notebook 顶部新建一个
Codecell,粘贴并运行以下内容:
from IPython.display import HTML, display
display(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>
'''))想单独隐藏某个长 cell?别用全局方案
比如画图代码太长干扰阅读,又不想影响其他 cell —— 这时用 %%capture 或手动加折叠标记更合适。
-
%%capture魔法命令只能捕获输出,不能隐藏代码本身;但它配合captured_output.show()可实现“执行但不显示输出”,间接减少干扰 - 真正隐藏单个 cell 的代码,可用 nbextensions 的
Collapsible Headings(需配合 markdown 标题)或Toggle Cell Tags+ 自定义 CSS,但操作略重;更简单的是:在该 cell 第一行写# HIDDEN,然后用浏览器开发者工具临时删掉div.input—— 仅限本地临时查看 - ⚠️ 注意:所有基于 JS 的隐藏都只是前端样式控制,源码仍存在于 .ipynb 文件中,导出 PDF 时若没额外参数,代码依然会印出来
真正容易被忽略的点是:隐藏效果是否随导出保留。快捷键 L 和 JS 脚本在导出 HTML 时默认不生效,必须用 nbextensions 的 hide_input_all + 兼容模板,或导出命令加 --no-input 才能彻底去掉代码。











