三种单元格类型
Jupyter Notebook 中有三种单元格,通过工具栏下拉菜单或快捷键切换:
| 类型 | 快捷键 | 用途 |
|---|---|---|
| Code | Y | 执行代码,显示运行结果 |
| Markdown | M | 富文本说明,渲染后显示格式化内容 |
| Raw | R | 原始内容,不执行也不渲染,供 nbconvert 使用 |
Code 单元格
Code 单元格是 Jupyter 的核心,用于输入和执行代码:
In [1]:
import math
x = 16
print(f"√{x} = {math.sqrt(x)}")
x = 16
print(f"√{x} = {math.sqrt(x)}")
Out [1]:
√16 = 4.0
Code 单元格的特性
- 语法高亮 — 根据当前 Kernel 语言高亮代码
- 自动补全 — 按 Tab 触发代码补全(见第9章)
- 多行输入 — 回车换行,Shift+Enter 执行
- 最后一个表达式自动显示 — 无需 print,最后一个表达式的值会自动输出
# 最后一个表达式自动显示(Out 输出) x = 5 x * x # Out [2]: 25,无需 print # 如果不想显示,在末尾加分号 x * x; # 不输出任何内容
输出类型
Code 单元格可以产生多种输出:
| 输出类型 | 触发方式 | 示例 |
|---|---|---|
| 标准输出 | print() | 文本流 |
| 返回值 | 表达式(无分号) | 2 + 3 → Out[1]: 5 |
| 错误信息 | 异常 | 红色 Traceback |
| 图表 | matplotlib 绘图 | 内联图像 |
| HTML | IPython.display.HTML() | 富文本 |
| DataFrame 表格 | pandas DataFrame | 格式化表格 |
Markdown 单元格
Markdown 单元格用于写文档说明。双击已渲染的 Markdown 单元格可以进入编辑模式;按 Shift+Enter 渲染。
Markdown 单元格渲染后的效果:标题、加粗文字、有序列表,数学公式也能正确渲染
Markdown 常用语法速查
# 标题 # 一级标题 ## 二级标题 ### 三级标题 # 文字格式 **粗体** *斜体* ~~删除线~~ `行内代码` # 列表 - 无序列表项 1 - 无序列表项 2 - 嵌套列表 1. 有序列表项 1 2. 有序列表项 2 # 代码块 ```python print("Hello, World!") ``` # 表格 | 列1 | 列2 | 列3 | |-----|-----|-----| | A | B | C | # 链接与图片 [链接文字](https://example.com) 
执行顺序与 In/Out 编号
这是 Jupyter 中最容易造成混乱的地方。执行编号 [n] 代表全局执行顺序,不是单元格在文档中的位置。
# 单元格 A(位于顶部) x = 10 # 先执行,In[1] # 单元格 B(位于中间) x = 20 # 后来修改,In[3] # 单元格 C(位于底部) print(x) # In[2] 时输出 10,In[4] 时输出 20
DANGER
如果你多次修改并重新运行某个单元格,变量的值由最后一次执行决定,而不是文档从上到下的顺序。这是 Jupyter 最常见的 Bug 来源!定期使用 Kernel → Restart & Run All 确保结果一致。
单元格操作快捷键(命令模式)
先按 Esc 进入命令模式,然后:
A在当前单元格上方插入
B在当前单元格下方插入
D D删除当前单元格(按两次 D)
Z撤销删除
X剪切当前单元格
C复制当前单元格
V在下方粘贴单元格
↑ / ↓选中上/下一个单元格
Ctrl+↑/↓移动单元格
M切换为 Markdown 类型
Y切换为 Code 类型
Shift+M合并选中的单元格
Raw 单元格
Raw 单元格的内容既不会被执行,也不会被渲染。主要用于:
- 向
nbconvert传递格式化指令(如 reStructuredText 标记) - 临时禁用某段代码(代替注释,但保持代码格式)
在日常使用中,Raw 单元格较少用到。
多选单元格
在命令模式下,按住 Shift 点击可以选中多个单元格,然后批量操作:
- 同时删除多个单元格
- 同时移动多个单元格
- 按 Shift+M 合并为一个单元格
本章小结
- Code:执行代码,最后一行表达式自动输出
- Markdown:格式化说明文档,支持 LaTeX
- Raw:原始内容,不执行不渲染
- 执行顺序 ≠ 位置顺序,定期 Restart & Run All