安利十二个常用的IPython魔法命令
本文约2000字,阅读大概需要分钟
不能以偏概全哈,就我个人而言,在日常编程中一般都会用到两个编译器——Pycharm和Jupyter,在刷算法、写爬虫时会用到前者,因为我习惯用Pycharm里的Debug功能调试,很容易找出代码中的Bug。
而进行数据分析、机器学习时就会用到后者,因为Jupyter编译器利用的IPython是一种交互式计算和开发环境,对数据的可视化十分友好,这类单元格的形式每一步都有运行结果,便于整理自己思路,并且很大程度上节约了运行时间,在调试的时候只需要运行出错的部分代码,而不是全部。
IPython中有一些特有的魔法命令,如果能合理的利用这些魔法命令,会省去很多不必要的操作,为编程带来很大程度的便利,下面就来安利十二个常用的魔法命令。
基础常识
?和?? ->例:%matplotlib?、%matplotlib??
后缀为?可以获取一个对象的相关信息,比如描述一个方法该怎么用;后缀为??可以获取该对象更加详细的信息,比如源码。这个对象可以是IPython中自带的、也可以是导入的、也可以是自己定义的。
%和%% ->例:%time、%%time
前缀为%被称作行魔法命令(line magics),只能在单个输入行上运行;前缀为%%被称作单元格魔法命令(cell magics),可以在多个输入行上运行。
1.%Ismagic和%magic
如果你还不了解IPython的魔法命令,那这两个魔法命令一定是最重要的,记牢这两个命令之后慢慢了解剩下的。%lsmagic的作用就是列出所有存在的行魔法命令和单元格魔法命令,部分截图如下:
%magic的作用就是给出所有魔法命令的详细介绍,比如介绍、样例等等,比较考验英语功底,耐下心慢慢了解。
2.%pdb
输入这个命令并且运行之后,如果后面的代码出现了异常,这个指令就会主动进入调试器,几十行几百行代码难免会有几个或一堆Bug。可能比较笨的方法就是找断点然后print,最后还要把print删掉,而%pdb调试找到Bug后直接退出就好,相对前者更方便些。
3.%debug
![](https://filescdn.proginn.com/28fc24ab9f0cf5f5a0c9c3f14089cce3/a7184f596529fcf339b5227becff697d.webp)
4.%who和%whos
![](https://filescdn.proginn.com/e6e4dcc2c0919bbd2ec230d2d3775dc0/e7d8d4d59c9115a5fcd9c746ab7ad82d.webp)
5.%time和%timeit
![](https://filescdn.proginn.com/ffedef4490a7bd06d7ebcedd005d627b/bc496f2c86c62fd03e24ae5747d06bd4.webp)
6.%store
![](https://filescdn.proginn.com/53dd09f96d9150f8e63307e4bd574960/07703fbc981924569010b4d4240c8ede.webp)
![](https://filescdn.proginn.com/3da9b6fa8c07d8950e716ae6c8e54e73/df6efaf7755b20a571edbc1594cff1e6.webp)
7.%xdel和%reset
![](https://filescdn.proginn.com/2326dc5223026bfcbcf398a4293a767a/d2735b8e3151f808eb616dd33c134c94.webp)
8.%cls
![](https://filescdn.proginn.com/5d9c81689ae78529b4489abeed0c38a6/f8cc603221370ff8192d6faccb78a3f7.webp)
9.%%writefile
![](https://filescdn.proginn.com/56775efed566faa37d756f452670faeb/a8b80b190f52e7f3fe735dc75694d73d.webp)
10.%run
![](https://filescdn.proginn.com/223b0f50f7ebad078cc467ced3969e12/6f365e9f9535ba16f7d9db0d3945a6e8.webp)
11.%psource
![](https://filescdn.proginn.com/7a79094b376e5a73dec153586bb8a6aa/dac89e8623f757ffc429a4d22b46255c.webp)
12.%hist
![](https://filescdn.proginn.com/841387ce88aa38ebf5fb1b092b8192c2/92b971b1b271689d8a5002952dafe076.webp)
![](https://filescdn.proginn.com/caad4eea3a960e93d4bbc19cb5432870/1c8c8cfb5837d5d9d8be80cf0a0088b8.webp)
推荐阅读 误执行了rm -fr /*之后,除了跑路还能怎么办?! 程序员必备58个网站汇总 大幅提高生产力:你需要了解的十大Jupyter Lab插件