文章目录
- [IPython 魔法命令(Magic Commands)](#IPython 魔法命令(Magic Commands))
-
- 一、系统与文件操作
-
- [1. `%ls`](#1.
%ls
) - [2. `%cd`和`%pwd`](#2.
%cd
和%pwd
) - [3. `%%writefile`](#3.
%%writefile
) - [4. `%run`](#4.
%run
)
- [1. `%ls`](#1.
- 二、性能分析与计时
-
- [1. `%timeit`](#1.
%timeit
) - [2. `%prun`](#2.
%prun
) - [3. `%%timeit`](#3.
%%timeit
)
- [1. `%timeit`](#1.
- 三、代码处理与交互
-
- [1. `%load`](#1.
%load
) - [2. `%edit`](#2.
%edit
) - [3. `%store`](#3.
%store
)
- [1. `%load`](#1.
- 四、调试与诊断
-
- [2. `%pdb`](#2.
%pdb
) - [3. `%who`](#3.
%who
)
- [2. `%pdb`](#2.
- 五、扩展与工具集成
-
- [2. `%load_ext`](#2.
%load_ext
) - [3. `%%html`和`%%javascript`](#3.
%%html
和%%javascript
)
- [2. `%load_ext`](#2.
- 六、信息查询与帮助
-
- [2. `%lsmagic`](#2.
%lsmagic
) - [3. `%history`](#3.
%history
)
- [2. `%lsmagic`](#2.
- 七、高级功能示例
-
- [2. `%%script`](#2.
%%script
) - [3. `%%latex`](#3.
%%latex
)
- [2. `%%script`](#2.
IPython 魔法命令(Magic Commands)
IPython 的魔法命令(Magic Commands)是其交互式环境中的特殊指令,以 % 或 %% 开头,用于快速执行非 Python 标准功能的任务(如文件操作、性能分析、系统交互等)。它们大幅提升了代码编写和调试效率,尤其在 Jupyter Notebook 中广泛应用。
IPython 的魔法命令是其核心特色功能,分为行魔法(% 前缀)和单元魔法(%% 前缀)。以下是常用魔法命令分类详解及代码示例。
一、系统与文件操作
1. %ls
列出当前目录文件(类似Shell命令)
python
# 显示详细文件列表
%ls -l
2. %cd
和%pwd
切换工作目录和显示当前目录
python
# 切换到 ../data 目录
%cd ../data
# 显示当前目录
%pwd
# 切换回文件所在目录
%cd ../notebooks

3. %%writefile
将代码单元内容写入文件
python
%%writefile test.py
def hello():
print("Hello from magic command!")
4. %run
执行外部Python
脚本
python
%run test.py # 执行刚创建的 test.py
# 运行 test.py 中的 hello 函数
hello()

二、性能分析与计时
1. %timeit
测量代码执行时间(自动多次运行取平均)
python
%timeit [x**2 for x in range(1000)]
# 输出示例:259 µs ± 4.56 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

2. %prun
性能分析(函数级耗时统计)
python
def sum_squares(n):
return sum([i**2 for i in range(n)])
%prun sum_squares(100000)
# 输出各函数调用耗时统计表

3. %%timeit
测量整个代码单元的执行时间
python
%%timeit
import numpy as np
arr = np.random.rand(1000)
arr.mean()

三、代码处理与交互
1. %load
加载外部代码到当前单元,如%load test.py
python
%load test.py
2. %edit
编辑代码并执行(打开编辑器)
python
# 编辑后直接执行
%edit test.py
hello()
3. %store
跨会话变量存储
python
data = [1,2,3]
# 存储变量
%store data
# 恢复变量(下次启动仍可用)
%store -r data
四、调试与诊断
%debug
自动进入调试器(在异常后使用)
python
def divide(a, b):
return a / b
# 触发 ZeroDivisionError
# 进入 pdb 调试环境
%debug divide(1, 0)

2. %pdb
自动启动调试器(全局设置)
python
# 开启自动调试(触发异常时自动进入 pdb)
%pdb on
3. %who
查看当前命名空间变量
python
a = 1
b = "text"
# 输出当前命名空间变量
%who
# 仅显示字符串变量: b
%who str
五、扩展与工具集成
%matplotlib
控制 Matplotlib 绘图显示
python
# 内嵌显示图表(Jupyter 常用)
%matplotlib inline
import matplotlib.pyplot as plt
plt.plot([1,2,3])

2. %load_ext
加载 IPython 扩展
python
# 加载自动重载模块扩展
%load_ext autoreload
# 修改代码后自动重新加载模块
%autoreload 2
3. %%html
和%%javascript
渲染HTML,执行JavaScript
python
%%html
<div style="color:red">This is HTML!</div>

python
%%javascript
alert("Hello from JavaScript!");

六、信息查询与帮助
%magic
查看魔法命令文档
python
%magic
# 显示所有可用的魔法命令

2. %lsmagic
列出所有可用魔法命令
python
%lsmagic
# 显示所有可用的魔法命令
3. %history
显示命令历史
python
%history -n 1-3
# 显示历史命令(第1-3条)
七、高级功能示例
%%capture
捕获输出/错误流
python
%%capture result
import sys
print("Captured output")
sys.stderr.write("Error message")
result.stdout
# 获取捕获的标准输出
2. %%script
调用外部解释器
python
%%script cmd
# Windows 命令行脚本,Linux/MacOS 可用 bash,即 %%script bash
echo "Running Bash script!"
ls -l
3. %%latex
渲染 LaTeX 公式
python
%%latex
\begin{equation}
E = mc^2
\end{equation}

IPython 魔法命令大幅提升了交互式编程效率,尤其在数据分析、快速原型开发场景中,能够无缝结合 Python 代码与系统工具。