10 个 Jupyter 魔法命令,一个比一个强!
前几天在公司写个小实验,临时用 Jupyter Notebook 跑代码,结果我一个同事凑过来看我命令写得飞起,说“卧槽你这是魔法吧?”。其实还真是,Jupyter 里那种前面带个 % 或 %% 的命令,就叫“魔法命令(Magic Command)”。 很多人平时都在 Notebook 里写 Python,却根本不知道这些东西能多省事。
今天我就随手整理了我平时最常用的 10 个魔法命令,每一个都是真香系列。
1. %time / %timeit —— 代码性能分析神器
这个命令我用得最多。比如你想知道某段代码执行了多久:
%time sum([i for i in range(1000000)])
如果你想要更准确的平均时间,用 %timeit:
%timeit sum([i for i in range(1000000)])
区别是 %timeit 会多次执行取平均值,结果更可靠。写算法优化时,绝对好用。
2. %pwd / %cd —— 直接操作路径
有时候 Notebook 的文件路径老变,你还得 import os 去查?完全没必要。
%pwd # 查看当前路径
%cd ../data # 切换目录
这比用 os.getcwd() 快多了,特别是数据分析的时候频繁切目录。
3. %lsmagic —— 看看你都能用哪些魔法
如果你忘了有哪些命令可用,这一条相当于魔法目录:
%lsmagic
它会列出所有的 line magic(行命令)和 cell magic(块命令)。第一次看到会有种“我居然一直在错过这些”的感觉。
4. %run —— 运行外部脚本
有时候我懒得复制一大段旧代码到 Notebook,就直接:
%run my_script.py
运行完之后,脚本里定义的变量还能直接在 Notebook 里继续用。相当于 import 加执行一体化。
5. %matplotlib inline —— 图直接显示在 Notebook 里
每次画图之前都加这一句:
%matplotlib inline
import matplotlib.pyplot as plt
plt.plot([1, 2, 3], [2, 4, 6])
plt.show()
图就会直接在 Notebook 输出里显示出来,不用弹出窗口。现在大多数人都知道这条,但其实还有兄弟命令 %matplotlib notebook,是交互式的,可以缩放、移动。
6. %who / %whos —— 看看你现在有哪些变量
调试代码时特别方便:
a = 10
b = [1, 2, 3]
%whos
输出像这样:
Variable Type Data/Info
a int 10
b list n=3
这比 locals() 好看多了,也能帮你快速查内存里存了啥。
7. %%time —— 计时整块代码
如果你要测的是多行代码的运行时间,就要用双百分号的版本:
%%time
total = 0
for i in range(1000000):
total += i
total
注意 %time 是行命令,%%time 是块命令。写算法调优时用这个非常爽。
8. %history —— 查看命令历史
有时候你写了一堆代码,结果忘了之前调过哪个参数,可以用:
%history -n 1-10
输出你最近的 10 条命令。甚至还能把它导出成文件:
%history -f history.py
下次直接 run 起来继续调试。
9. %%writefile —— 把代码写进文件
我平时写 demo 时经常这样:
%%writefile demo.py
defgreet(name):
returnf"Hello, {name}!"
直接在 Notebook 里生成一个 Python 文件。省去了打开编辑器、复制粘贴的麻烦,尤其适合写临时工具。
10. %reload_ext autoreload —— 自动重载模块
这个是真·高频使用。比如你在不断修改一个模块的代码,而 Notebook 又懒得重启:
%load_ext autoreload
%autoreload 2
以后每次执行 cell 时,Jupyter 会自动重新加载被修改的模块内容,不用 importlib.reload(),更不用重启内核。
番外:! 命令也是魔法
其实 Jupyter 里还有一类“系统级魔法”,比如:
!ls
!pip install requests
前面加个 ! 就能执行 shell 命令。对,就是在 Notebook 里直接跑终端命令。
小结一下
这些魔法命令其实是 Jupyter 的灵魂,用好了能让你写代码的节奏流畅到飞起。 简单说就是:
%是单行命令;%%是针对整个 cell 的命令;!是执行系统命令。
最后给你个小练习: 打开一个新的 Notebook,敲 %lsmagic 看看有多少还没用过的。 你可能会发现,这玩意比写 Python 还好玩。
-END-
我为大家打造了一份RPA教程,完全免费:songshuhezi.com/rpa.html
虎哥作为一名老码农,整理了全网最全《python高级架构师资料合集》,总量高达650GB,点击下方公众号回复关键字 python 全部免费领