文章目录
- IPython 魔法命令(Magic Commands)
- 一、系统与文件操作
- 1. `%ls`
- 2. `%cd`和`%pwd`
- 3. `%%writefile`
- 4. `%run`
- 二、性能分析与计时
- 1. `%timeit`
- 2. `%prun`
- 3. `%%timeit`
- 三、代码处理与交互
- 1. `%load`
- 2. `%edit`
- 3. `%store`
- 四、调试与诊断
- 2. `%pdb`
- 3. `%who`
- 五、扩展与工具集成
- 2. `%load_ext`
- 3. `%%html`和`%%javascript`
- 六、信息查询与帮助
- 2. `%lsmagic`
- 3. `%history`
- 七、高级功能示例
- 2. `%%script`
- 3. `%%latex`
IPython 魔法命令(Magic Commands)
IPython 的魔法命令(Magic Commands)是其交互式环境中的特殊指令,以 % 或 %% 开头,用于快速执行非 Python 标准功能的任务(如文件操作、性能分析、系统交互等)。它们大幅提升了代码编写和调试效率,尤其在 Jupyter Notebook 中广泛应用。
IPython 的魔法命令是其核心特色功能,分为行魔法(% 前缀)和单元魔法(%% 前缀)。以下是常用魔法命令分类详解及代码示例。
一、系统与文件操作
1. %ls
列出当前目录文件(类似Shell命令)
# 显示详细文件列表
%ls -l
2. %cd
和%pwd
切换工作目录和显示当前目录
# 切换到 ../data 目录
%cd ../data
# 显示当前目录
%pwd
# 切换回文件所在目录
%cd ../notebooks
3. %%writefile
将代码单元内容写入文件
%%writefile test.py
def hello():
print("Hello from magic command!")
4. %run
执行外部Python
脚本
%run test.py # 执行刚创建的 test.py
# 运行 test.py 中的 hello 函数
hello()
二、性能分析与计时
1. %timeit
测量代码执行时间(自动多次运行取平均)
%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
性能分析(函数级耗时统计)
def sum_squares(n):
return sum([i**2 for i in range(n)])
%prun sum_squares(100000)
# 输出各函数调用耗时统计表
3. %%timeit
测量整个代码单元的执行时间
%%timeit
import numpy as np
arr = np.random.rand(1000)
arr.mean()
三、代码处理与交互
1. %load
加载外部代码到当前单元,如%load test.py
%load test.py
2. %edit
编辑代码并执行(打开编辑器)
# 编辑后直接执行
%edit test.py
hello()
3. %store
跨会话变量存储
data = [1,2,3]
# 存储变量
%store data
# 恢复变量(下次启动仍可用)
%store -r data
四、调试与诊断
-
%debug
自动进入调试器(在异常后使用)
def divide(a, b):
return a / b
# 触发 ZeroDivisionError
# 进入 pdb 调试环境
%debug divide(1, 0)
2. %pdb
自动启动调试器(全局设置)
# 开启自动调试(触发异常时自动进入 pdb)
%pdb on
3. %who
查看当前命名空间变量
a = 1
b = "text"
# 输出当前命名空间变量
%who
# 仅显示字符串变量: b
%who str
五、扩展与工具集成
-
%matplotlib
控制 Matplotlib 绘图显示
# 内嵌显示图表(Jupyter 常用)
%matplotlib inline
import matplotlib.pyplot as plt
plt.plot([1,2,3])
2. %load_ext
加载 IPython 扩展
# 加载自动重载模块扩展
%load_ext autoreload
# 修改代码后自动重新加载模块
%autoreload 2
3. %%html
和%%javascript
渲染HTML,执行JavaScript
%%html
<div style="color:red">This is HTML!</div>
%%javascript
alert("Hello from JavaScript!");
六、信息查询与帮助
%magic
查看魔法命令文档
%magic
# 显示所有可用的魔法命令
2. %lsmagic
列出所有可用魔法命令
%lsmagic
# 显示所有可用的魔法命令
3. %history
显示命令历史
%history -n 1-3
# 显示历史命令(第1-3条)
七、高级功能示例
%%capture
捕获输出/错误流
%%capture result
import sys
print("Captured output")
sys.stderr.write("Error message")
result.stdout
# 获取捕获的标准输出
2. %%script
调用外部解释器
%%script cmd
# Windows 命令行脚本,Linux/MacOS 可用 bash,即 %%script bash
echo "Running Bash script!"
ls -l
3. %%latex
渲染 LaTeX 公式
%%latex
\begin{equation}
E = mc^2
\end{equation}
IPython 魔法命令大幅提升了交互式编程效率,尤其在数据分析、快速原型开发场景中,能够无缝结合 Python 代码与系统工具。