你有没有这样的经历?
当你想测试一段简单的 Python 代码(比如测试一个 API,或者调试一个正则)时,你通常会怎么做?
- 新建一个
test.py或者temp.py。 - 输入代码。
- 打开终端,输入
python test.py。 - 发现报错了,修改代码,再运行一遍。
- 测试完后,看着满桌面的垃圾文件陷入沉思……
或者,你可能喜欢用 Jupyter Notebook (.ipynb),但他需要启动服务,而且 .ipynb 文件在 Git 版本控制里简直是噩梦。
今天介绍一个 VS Code 自带的“魔法指令”,让你在普通的 .py 文件里,也能拥有 Jupyter 般的交互式体验。它就是 —— # %%。
什么是 # %%?
这其实是 VS Code 对 Python Interactive Window (交互式窗口) 的特殊标记。
它的原理很简单:只要你在普通的 Python 代码中输入 # %%,VS Code 就会把这就行代码及其下方的代码识别为一个“单元格 (Cell)”。
这就好比在你的代码里划了一道“起跑线”。
如何使用?
- 随便打开一个
.py文件(我通常会常备一个draft.py草稿本)。 - 在代码上方输入
# %%(注意中间有个空格)。 - 你会发现代码上方突然多出了一行灰色的文字:
Run Cell | Run Below | Debug Cell。 - 点击 Run Cell,或者直接按快捷键
Shift + Enter。
神奇的事情发生了:你的 VS Code 会在右侧弹出一个独立的窗口,立刻显示这段代码的运行结果!
# %%
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
y = np.sin(x)
plt.plot(x, y)
plt.show()
# 点击 Run Cell,右边直接出图!
为什么要用它?三大核心优势
1. 变量是“活”的 (State Retention)
这是它比终端运行强一万倍的地方。
在终端里,每次运行 python test.py,程序跑完就退出了,内存里的变量全部清空。
而在交互式窗口里,变量是常驻内存的。
- 你可以在第一个 Cell 里加载一个 500MB 的数据集(耗时 10秒)。
- 然后在第二个 Cell 里随意分析这个数据。
- 你不需要每次都重新加载那 500MB 的数据!
2. “草稿本”神技
你可以把几十个不相关的测试代码写在同一个文件里,用 # %% 隔开。
- 上面的 Cell 测爬虫。
- 中间的 Cell 算算法。
- 下面的 Cell 画图。
它们互不干扰,想跑哪段点哪段。你的项目文件夹里再也不会出现
test1.py,test2.py,test_final.py这种垃圾文件了。
3. 可视化神器
它完美支持 pandas 的表格显示和 matplotlib 的绘图。不需要 plt.show() 弹窗,图表直接嵌在右边的窗口里,还可以缩放、保存,体验和 Jupyter Notebook 一模一样。
避坑指南
当你第一次点击 Run Cell 时,VS Code 可能会右下角弹窗提示:
“Running cells with ‘Python 3.xx’ requires the ipykernel package.”
别慌,这是因为 Python 原生不懂什么是 Cell,它需要一个“翻译官”。直接点击 Install (安装),几秒钟后就能用了。
另外,在这个交互窗口的顶部,你可以像切换电视频道一样切换 Python 内核(比如从 3.13 切回 3.12),非常方便。
总结
# %% 是我认为 VS Code Python 插件里被最严重低估的功能。它完美平衡了 .py 文件的工程便利性和 Jupyter Notebook 的探索灵活性。
从今天起,在该建 test.py 之前,先试试在你的代码里敲下这四个字符:#、空格、%、%。
Leave a comment