Chapter 05 / 10

单元格:Code、Markdown、Raw

深入理解三种单元格类型、执行顺序的陷阱,以及高效操作单元格的技巧

三种单元格类型

Jupyter Notebook 中有三种单元格,通过工具栏下拉菜单或快捷键切换:

类型快捷键用途
CodeY执行代码,显示运行结果
MarkdownM富文本说明,渲染后显示格式化内容
RawR原始内容,不执行也不渲染,供 nbconvert 使用

Code 单元格

Code 单元格是 Jupyter 的核心,用于输入和执行代码:

In [1]:
import math
x = 16
print(f"√{x} = {math.sqrt(x)}")
Out [1]:
√16 = 4.0

Code 单元格的特性

# 最后一个表达式自动显示(Out 输出)
x = 5
x * x   # Out [2]: 25,无需 print

# 如果不想显示,在末尾加分号
x * x;  # 不输出任何内容

输出类型

Code 单元格可以产生多种输出:

输出类型触发方式示例
标准输出print()文本流
返回值表达式(无分号)2 + 3Out[1]: 5
错误信息异常红色 Traceback
图表matplotlib 绘图内联图像
HTMLIPython.display.HTML()富文本
DataFrame 表格pandas DataFrame格式化表格

Markdown 单元格

Markdown 单元格用于写文档说明。双击已渲染的 Markdown 单元格可以进入编辑模式;按 Shift+Enter 渲染。

Markdown 单元格渲染效果
Markdown 单元格渲染后的效果:标题、加粗文字、有序列表,数学公式也能正确渲染

Markdown 常用语法速查

# 标题
# 一级标题
## 二级标题
### 三级标题

# 文字格式
**粗体**  *斜体*  ~~删除线~~  `行内代码`

# 列表
- 无序列表项 1
- 无序列表项 2
  - 嵌套列表

1. 有序列表项 1
2. 有序列表项 2

# 代码块
```python
print("Hello, World!")
```

# 表格
| 列1 | 列2 | 列3 |
|-----|-----|-----|
| A   | B   | C   |

# 链接与图片
[链接文字](https://example.com)
![图片描述](path/to/image.png)

执行顺序与 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 单元格的内容既不会被执行,也不会被渲染。主要用于:

在日常使用中,Raw 单元格较少用到。

多选单元格

在命令模式下,按住 Shift 点击可以选中多个单元格,然后批量操作:

本章小结