Jupyter Notebook 和 JupyterLab 提供了所谓的“魔法命令”(Magic Commands),它们以百分号 (%
) 或双百分号 (%%
) 开头,允许用户执行一些特殊的操作,比如测量代码运行时间、改变代码单元的行为、执行外部命令等。这里是一个完整的 Jupyter 魔法命令速成指南,帮助你快速了解并掌握这些命令。
1. 单行魔法命令(Line Magics)
单行魔法命令是以一个百分号 (%
) 开头,作用于单行代码。
1.1 %time
用于测量一行代码的执行时间。
%time sum(range(10000))
1.2 %timeit
用于自动多次运行代码并计算平均执行时间,适用于性能测试。
%timeit sum(range(10000))
1.3 %run
运行一个 Python 脚本文件(.py
)。
%run my_script.py
1.4 %load
加载外部 Python 脚本并将其内容插入当前单元格。
%load my_script.py
1.5 %matplotlib inline
在 Jupyter Notebook 中直接显示 matplotlib
生成的图形。
%matplotlib inline
import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4])
plt.show()
1.6 %pwd
显示当前工作目录路径。
%pwd
1.7 %cd
更改当前工作目录。
%cd /path/to/directory
1.8 %ls
列出当前目录下的文件和文件夹。
%ls
1.9 %who
列出当前会话中的所有变量。
%who
1.10 %who_ls
列出当前会话中的所有变量名,以列表的形式返回。
%who_ls
1.11 %reset
清除当前工作空间中的所有变量。
%reset
1.12 %history
显示历史命令。可以加参数控制显示的命令数量或范围。
%history -n 1-10 # 显示第1到第10行命令
1.13 %store
用于保存变量到磁盘,便于跨会话使用。
x = 10
%store x
1.14 %pip
和 %conda
安装 Python 包(在 Jupyter 中使用时,推荐用 %pip
或 %conda
替代直接用 !pip
或 !conda
)。
%pip install numpy
2. 多行魔法命令(Cell Magics)
多行魔法命令是以两个百分号 (%%
) 开头,作用于整个代码单元。
2.1 %%time
用于测量整个单元格代码的执行时间。
%%time
x = range(10000)
sum(x)
2.2 %%timeit
用于自动多次运行整个单元格的代码并计算平均执行时间。
%%timeit
x = range(10000)
sum(x)
2.3 %%run
执行一个 Python 脚本,并将脚本中的变量导入当前的 Jupyter 会话。
%%run my_script.py
2.4 %%capture
捕获并隐藏代码单元的输出(包括标准输出和错误输出)。
%%capture captured_output
print("This will not be displayed")
2.5 %%writefile
将代码写入指定的文件中。如果文件已存在,会覆盖该文件。
%%writefile my_script.py
print("Hello, world!")
2.6 %%bash
执行 Bash 命令(适用于 Unix-like 系统)。
%%bash
echo "Hello from Bash!"
2.7 %%html
将单元格的内容渲染为 HTML 格式。
%%html
<h1>This is a header</h1>
<p>This is a paragraph.</p>
2.8 %%latex
将单元格的内容渲染为 LaTeX 格式(通常用于数学公式)。
%%latex
\frac{1}{2} \sum_{i=1}^{n} x_i^2
2.9 %%python
可以运行 Python 代码块,适用于多语言支持的环境(例如,支持 IPython 的 Kernels)。
%%python
x = 10
x * 2
2.10 %%javascript
运行 [[JavaScript 代码]]。
%%javascript
alert("Hello, world!")
2.11 %%ruby
执行 [[Ruby 代码]]。
%%ruby
puts "Hello, Ruby!"
2.12 %%perl
执行 [[Perl 代码]]。
%%perl
print "Hello, Perl!\n"
3. 魔法命令的一些应用示例
3.1 测试代码性能
使用 %timeit
来测试代码的运行时间,适合进行性能优化。
%timeit [x**2 for x in range(1000)]
3.2 记录历史命令
查看并使用历史命令记录。
%history -n 1-10
3.3 执行外部脚本
可以通过 %run
来加载并运行一个外部脚本。
%run script.py
3.4 导出文件内容
使用 %%writefile
将代码导出到一个文件中。
%%writefile my_script.py
def add(x, y):
return x + y
3.5 查看变量
查看当前会话中的所有变量。
%who
3.6 使用 %store
跨会话传递变量
x = "Hello"
%store x # 存储变量 x
# 在另一个 Notebook 会话中,使用 %store -r 重新加载变量 x
%store -r x
print(x)
4. 魔法命令总结
- 行魔法命令:以一个
%
开头,作用于单行代码。 - 单行魔法命令示例:
%time
:测量单行代码执行时间。%run
:运行外部 Python 脚本。%who
:列出当前变量。
- 单元格魔法命令:以两个
%%
开头,作用于整个单元格。 - 多行魔法命令示例:
%%time
:测量整个单元格的执行时间。%%bash
:运行 Bash 命令。%%capture
:捕获输出。
这些魔法命令是 Jupyter 环境中的强大工具,能够提高你在数据分析、调试和自动化方面的效率。如果有任何魔法命令的疑问,或者需要更深入的解释,随时告诉我!