Python交互式命令行与Jupyter Notebook怎么运行代码
详细讲解Python交互式命令行(REPL)与Jupyter Notebook运行代码的具体步骤、底层执行机制、常用快捷键与操作避坑技巧,帮助开发者根据场景选择最合适的交互式开发工具。
运行Python代码并不只有将代码保存为 .py 文件后再通过终端整体调用这一种方式。交互式命令行与Jupyter Notebook提供了“输入一段、执行一段、即时查看结果”的交互式执行环境。交互式命令行基于终端的读取-求值-输出循环(REPL),适合快速验证简短语法与单一函数;Jupyter Notebook则以网页单元格为载体,兼具代码分段执行、图表即时渲染和文档记录功能,适合探索性数据分析和原型开发。本文详细介绍这两种环境的启动方式、具体的代码运行步骤、底层内存机制以及常见操作避坑点。
一、Python交互式命令行怎么运行代码
交互式命令行(Interactive Shell)是Python自带的轻量级执行环境,其核心机制是 REPL(Read-Eval-Print Loop,即读取、求值、输出、循环)。启动后,系统等待用户输入,按回车后解释器立即执行该行或该代码块,并将计算结果直接回显到终端屏幕上。
1. 启动交互式会话
在操作系统的终端(Windows下的CMD/PowerShell,macOS/Linux下的Terminal)中,直接输入以下命令并回车:
python
如果系统同时安装了多个版本,或者使用的是增强版交互终端,也可以输入 python3 或 ipython。启动成功后,屏幕会打印Python版本信息,并在最后一行出现三个右尖括号 >>>(IPython中则显示 In [1]:),这代表解释器已准备就绪,正在等待输入。
2. 单行代码的运行
在提示符 >>> 后面直接键入Python表达式或语句,按下键盘上的 Enter(回车键),解释器便会立即执行。示例如下:
>>> 125 * 8 + 35
1035
>>> name = "Python"
>>> f"Hello, {name}!"
'Hello, Python!'
在交互式命令行中,只要表达式产生返回值,即使不编写 print() 函数,终端也会自动打印该对象的标准表示形式(repr)。
3. 多行代码与复合语句的运行
当输入涉及函数定义(def)、条件判断(if)、循环语句(for / while)或类定义等复合结构时,执行流程与单行代码有所不同:
- 输入首行语句(例如
for i in range(3):)并回车后,下一行的提示符会变成三个点号...,表明当前语句尚未闭合。 - 在
...之后必须手动输入严格的缩进(通常为4个空格),再输入子语句。 - 多行代码写完后,必须多按一次回车键(输入一个空行),提示符才会重新变回
>>>,表示代码块已提交给解释器执行。
>>> for i in range(3):
... print(f"当前序号: {i}")
...
当前序号: 0
当前序号: 1
当前序号: 2
>>>
4. 变量状态与退出会话
交互式命令行在整个会话期间保持单一的进程内存。前面定义的变量、导入的模块或声明的函数,后续行均可直接读取使用。但一旦关闭终端或退出会话,内存中的所有数据将被清空。退出交互式命令行的方法如下:
- 执行内置函数:输入
exit()或quit()后按回车。 - 使用快捷键:macOS/Linux环境下按下
Ctrl + D;Windows环境下按下Ctrl + Z后按回车。
二、Jupyter Notebook怎么运行代码
Jupyter Notebook是一种基于Web的交互式计算开发环境。与命令行终端中整段连续滚动的文本流不同,Jupyter Notebook将代码、文档说明和执行结果组织为独立的单元格(Cell)。用户可以逐个单元格编写和运行代码,并直接在单元格下方查看图表、表格或文本输出。
1. 启动与界面创建
确保已安装 Jupyter(如未安装,可通过 pip install notebook 或通过 Anaconda 安装)。在目标工作目录的终端中输入以下命令:
jupyter notebook
命令执行后,本地后台服务启动,系统默认浏览器会自动打开 Notebook 仪表盘界面(通常访问 http://localhost:8888)。在页面右上角点击 New 并选择 Python 3 (ipykernel),即可创建一个扩展名为 .ipynb 的新笔记本文件。
2. 单元格类型与代码输入
Notebook 中有两种最核心的单元格类型:
- Code 单元格(代码单元格):用于编写和执行 Python 代码。左侧带有
In [ ]:标识。 - Markdown 单元格(标记单元格):用于书写说明文字、数学公式和排版说明。按快捷键
M可将选中的代码单元格切换为 Markdown 格式。
3. 运行代码的核心快捷键
在编辑代码单元格时,直接按 Enter 键只会产生换行,并不会触发代码执行。若要运行单元格中的代码,需使用以下组合键:
- Shift + Enter(推荐首选):运行当前选中的单元格,并将光标焦点自动移动到下一个单元格。如果当前是最后一个单元格,系统会在下方自动新建一个空白单元格。
- Ctrl + Enter:运行当前单元格,运行完毕后焦点仍停留在当前单元格,适合反复微调同一段代码。
- Alt + Enter(macOS 为 Option + Enter):运行当前单元格,并强制在其正下方插入一个新的空白代码单元格。
4. 执行状态与 Kernel 执行序号机制
单元格左侧的方括号内会实时显示执行状态,这是掌握 Jupyter 运行机制的关键依据:
In [ ]:表示该单元格尚未在当前内核会话中执行过,或者内核刚被重置。In [*]:星号表示当前单元格正在被后台 Kernel 计算,或者前面有其它排队的单元格正在执行。若长时间显示星号且无输出,需注意代码是否进入死循环。In [3]:括号内的数字代表该单元格在当前 Kernel 生命周期中的实际执行次序。每次运行一个单元格,全局计数器递增 1。
三、两种运行方式的核心差异与选型依据
虽然交互式命令行与 Jupyter Notebook 均属于即时求值的交互式环境,但它们在交互界面、代码管理粒度以及适用任务的生命周期上有着清晰的分工:
| 对比维度 | Python交互式命令行(REPL) | Jupyter Notebook |
|---|---|---|
| 运行介质 | 操作系统终端(字符控制台) | Web 浏览器前端页面 |
| 代码组织单元 | 单行或连续的多行缩进代码块 | 结构化的独立单元格(Cell) |
| 多行修改体验 | 回退编辑成本高,修改需重新输入 | 像常规编辑器一样自由修改后重新运行 |
| 输出呈现方式 | 纯字符文本及标准控制台输出 | 纯文本、富文本、HTML表格及交互图表 |
| 持久化存储 | 会话结束即销毁,不产生文件 | 保存为 .ipynb 格式,完整保留代码与结果 |
| 典型适用阶段 | 轻量语法实验、快速查阅API、环境排错 | 数据探索(EDA)、科研实验、原型展示与教学 |
四、常见操作问题与避坑指南
初学者在使用交互式环境时,常会因为环境特性与传统脚本的差异而遇到各种卡顿或运行结果不符合预期的问题。以下梳理最典型的四种状况及排查对策:
1. 命令行卡在“...”提示符下不执行
具体表现:在命令行输入循环或函数后按下回车,终端反复出现 ...,既不报错也不输出结果。
原因剖析:Python解释器通过空行来判断缩进块的终结。如果最后一行仍带有缩进或光标未回到顶格,解释器会默认你还在输入下一条子语句。
解决方案:直接按下一次纯回车键,让终端接收一个不含任何空格的空白行,即可触发解释器执行。
2. Notebook中单元格一直显示“In [*]”
具体表现:执行单元格后,左侧一直处于 In [*] 状态,长时间没有输出,下方单元格也无法执行。
原因剖析:表明后台 Kernel 正在全负荷计算,或者陷入了死循环、大文件读取、耗时的网络请求以及未响应的 input() 输入等待中。
解决方案:点击页面顶部工具栏的 Interrupt the kernel(方形停止按钮) 强制中断执行。如果中断无效,点击 Restart the kernel(圆环刷新按钮) 强制重启内核进程。
3. 变量覆盖与“幽灵变量”导致的逻辑混乱
具体表现:在 Notebook 中删除了某个生成变量的单元格,但在后续代码中依然可以读取该变量;或者修改了上方单元格的代码,但下方结果没有自动更新。
原因剖析:Notebook 中单元格的执行是手动的。删除前端界面的单元格不会自动清除后台内存中的变量对象;上方的代码改动也必须显式重新执行,其内存状态才会更新。
规范做法:在最终保存或交付代码前,务必在顶部菜单执行 Kernel -> Restart & Run All(重启内核并从头执行所有单元格),以确保整篇 Notebook 的逻辑在完全干净的运行环境中依然成立。
4. 妥善保存与退出后端服务
在 Jupyter Notebook 中编写代码后,需随时使用快捷键 Ctrl + S(macOS 为 Cmd + S)保存文件。直接关闭浏览器标签页并不会终止后台的 Python 进程。若要完全停止服务,需回到启动该命令的终端窗口,按下 Ctrl + C,并在提示出现时输入 y 或连按两次 Ctrl + C 结束服务。
总结:Python交互式命令行与Jupyter Notebook的核心魅力在于能够打破“全量编写-全量编译-全量运行”的等待周期。理解命令行REPL的即时求值机制与Jupyter Notebook的单元格内核状态流转,能够帮助你在日常编码中更高效地验证思路、分析数据与构建工程原型。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









