说明
交互式shell是执行Python代码的一种重要方式,其实Python自身是打包了Python shell的,但由于ipython的易用性,我们通常在本地会使用ipython,同时,我们也可以在本地启动有图形化界面的jupyter,其内核即为ipython。这里有一篇ipython的介绍。
这里罗列了常用的一些jupyter知识(快捷键,魔术命令等),不全,只是常用。除快捷键外,其他知识也适用于ipython。
对于jupyter,这里所有的命令在不说明的情况下都认为是在编辑模式之下。
jupyter快捷键介绍:这一篇文章里有很详细的快捷键介绍。
文章目录
1. 常用快捷键
-
模式转换
转入编辑模式:enter 转入命令模式:esc
-
代码运行
运行单元格:control+enter 运行单元格,进入下方单元格:shift+enter 运行单元格,在下方插入新单元格:alt+enter
-
光标移动
去上一行:up 去下一行:down
-
代码编写
查看函数介绍:shift+tab 缩进:ctrl+] 解除缩进:ctrl+[
-
单元格操作
删除选中的单元:进入命令模式+双击D (不分大小写) 折叠单元格输出:进入命令模式+O(不分大小写) 全局查找替换:进入命令模式+F(不分大小写)
2. 常用魔术命令
1) 加载代码(%load)
运行命令:
%load name.py
可以将名为name的Python文件中的代码直接加载到执行单元中,命令 %load name.py会被自动注释掉。
2) 绘图(%matplotlib)
在绘图命令之前输入命令:
%matplotlib inline
这个命令可以确保你的图会在jupyter notebook中绘制出来。
3) 测试运行时间(%time、%timeit、%%time)
用法:在时间测试魔法命令后加上想要测试的命令
测试时间的魔法命令有三个:
%time 测试一条命令的执行时间
%timeit 测试一条命令多次执行耗时的平均值
%%time 测试本代码单元的内容
从上面的命令介绍不难看出:
%time:命令适合测试中大型函数的运行时间;
%timeit:适合测试耗时较少的命令,多次运行测试更加准确;
%%time:是一个单元魔法命令,测试的是一个单元中的命令,这样能够让我们知道执行某一代码块需要多长时间。
4) 交互变量操作(%who、%whos、%who_ls、%xdel、%reset、%store)
jupyter的内核是IPython,而IPython是一个交互式的shell,在交互的过程中有很多的交互变量,代码写长了之后很容易出现交互变量的混淆和混用,那么对这些交互变量的管理就极为重要了。
-
显示交互变量列表
%who //简单给出所有交互参数名 %whos //给出交互参数名、类型、描述信息 %who_ls //给出一个列表,元素为所有交互参数名
-
操作交互参数
使用以下命令可以删除交互参数:%xdel name //删除名为name的交互参数名 %reset //删除所有交互参数名
有的时候有很大的数组,我们可能想要重复使用,但是清理交互空间参数之后,这个数组就会被删除掉,这个时候我们需要将他们暂时存储起来。
存储变量语法:
v = value //声明一个变量 %store v //将变量v存储起来
再次使用存储的变量语法:
%store -r v //重新启用变量v
值得一提的是,这样存储的变量,不仅可以在本文件中可以重新使用,也可以在其他的文件中使用。
5) 调试(%debug、%pdb)
%debug //进入调试模式,设置断点调试
%pdb //在程序运行出错之后,在出错的
//地方设置断点,自动进入调试
exit //退出调试
这两种调试的方法几乎一样,区别就在于%pdb可以自动进入调试模式,并且自动设置断点。
6) 查看历史命令(%hist)
%hist //查看历史命令
%hist a:b //查看从第a行到第b行的命令
7) 定义模块并调用(%%writefile、%run)
在有些时候,我们会定义一些常用的函数,我们可以将他们写入一个文件中,在我们需要使用的地方import进来使用。
%%writefile name.py //向名为name的文件中写入codes
[codes
...
c_end]
这样一来在下次使用name.py中的函数时,可以直接import name, 然后调用。
%run name.py //运行名为name的Python文件
用这个命令运行Python文件时,如果出现了错误,会给出堆栈信息,更利于排错,不会像用python命令运行时那样,只给出最简单的错误提示。
8) 查看函数源码(%psource)
%psource func_name //查看名为func_name的函数的源码
另外的一个查看函数源码的方法是在函数后接两个问号,在下面的问号命令里我做了介绍,%psource函数只会显示源码,而用问号的方式会显示更多介绍信息。
9) 查看魔法命令列表(%lsmagic)
%lsmagic //列出可使用的所有魔法命令
这个命令时非常有用的,当你做某个重复操作或者遇到问题时,不妨看一看有没有可用的魔法命令。在列表中找到感兴趣的魔法命令之后,就可以使用“?”命令查看相关魔法命令的介绍。多多探索,也许你的写代码效率会提升很多。
3. 其他
1) 问号(?)用法
-
查看变量或函数介绍
在变量或函数名后加上?并运行,对于函数会显示定义好的文档字符串。这一方法对于魔法函数极其好用。 -
查看源代码
在函数名后加两个?并运行。 -
利用通配符搜索函数
在jupyter中*是通配符,配合问号可用来搜索命令,如下:
输入命令:np.*load*?
运行得到结果:
2) 使用ipython调试
调试部分内容较多,放在这篇文章中。