- In [x] 输入输出显示
- Tab补全与自动缩进
- 方便的帮助
?
与??
- 使用历史
- Shell命令和魔术命令
%edit
编辑文件并运行%run
命令运行脚本%timeit
快速计算运行时间%pylab
进行交互式计算- 常用的魔术命令
- 默认快捷键
IPython
是增强的python交互shell, 比默认的Python
shell要强大得多, 支持自动补全, 自动缩进, bash命令, 魔术命令, 更强大的历史查看等等. 同时, ipython也是Jupyter的核心组件, 是使用Jupyter进行强大的科学计算和交互可视化的最佳平台.
IPython的安装可以参考Python基础2: 基础知识和使用 或其他相关资料.
IPython和Jupyter (Notebook)间的关系也可以参考上面的链接.
In [x] 输入输出显示
IPython
支持所有Python
Shell 的功能, 在输入输出时, IPython
会使用In [x]
和Out [x]
表示输入输出,并表示出相应的序号。这个x
的数字是两个保存历史信息的变量, 可以使用历史来追溯. 这个In [x]
和Out [x]
也是Jupyter Notebook
的运行顺序标志.
Tab补全与自动缩进
- IPython直接支持tab进行变量/命令/方法/属性/模块的自动补全. 而python shell支持并不好. 甚至支持比IDLE还要强大(主要是方法/属性/模块显示上要更强大)
- 调用提示是一个重要的功能, 而且很有特色. 在ipython中, 进行自动补全时, 如果有多个可选项, 就会出现调用提示, 可以使用
上下左右键
进行选择, 方便快速调用.
- 在
变量.
后按Tab
可以调用变量的方法和属性.变量.a
再tab
就可以快速查看a
开头的属性和方法. 再按上下左右键
进行选择. - 直接输入部分命令名后按
Tab
, 可以获得命令的提示 (包括魔法命令). - 命令提示时, 甚至可以提示当前目录下匹配的
文件
或文件夹
.
命令提示
另外, ipython还支持通配符*
. 例如输入*Error?
然后确认 (需要最后一个?
结尾). 可以列出结尾为Error
匹配的对象. 这有时比一般补全和调用提示还要强大.
方便的帮助
这是ipython特色功能, IDLE都没有. 使用?
和??
可以快速获取命令/函数或者变量的相关帮助.
-
?显示内省对象?
或?对象
可以获得对象(包括内置方法, 函数, 对象方法属性等)的一些通用信息, 这些信息又叫内省
, 包括类型Type
, 字符串化信息String form
,Docstring
, 长度Length
, 文件File
等等.
-
对象??
或??对象
使用两个问号, 可以显示源代码帮助. (内建对象或者其他来源于动态库的对象不显示源代码, 有时显示的帮助和?
不太一样.)
使用
help
方法获得的帮助信息往往比?
和??
更多(但不显示源代码,类型等), 例如可以列出详细的对象所拥有的属性和方法.
试一试: 输入help(str)
来查阅字符串类型str
的帮助, 也再试试上述示例的三个对象range
,hello
,b
的help
查看.
使用历史
- IPython支持使用
上/下
键来调用之前的历史命令. 也可以使用Ctrl+p/n
来查看. - 历史搜索:
Ctrl+R
, 然后输入命令的一些部分内容, 就可以找到相应匹配的内容. -
%hist
可以查看当前会话的历史输入命令 (针对该次运行).%history
一样.%hist -n
可以显示序号, 这里的序号和ln [x]
的x一致. -
_
,__
,___
和_i
,_ii
,_iii
变量保存着最后三个输出和输入对象。 -
_n
和_in
(这里的n表示具体的数字)变量返回第n个输出
和输入
的历史命令。返回的字符串. 例如:
In [1]: 12 ** 2
Out[1]: 144
In [2]: print("The result is {0:d}.".format(_))
#The result is 144.
ln [3]: exec(_i2)
#The result is 144.
Shell命令和魔术命令
- 支持直接使用一些常用的shell命令, 例如
cd
,ls
,pwd
等. 其本质是简化了的%命令
魔术命令. 因此魔术命令也可以以这种方式来执行. - 支持执行Shell命令, 使用
!命令
来执行外面Shell的命令并显示结果. 例如!ping baidu.com
- ipython有一种重要功能叫魔术命令, 内建的一些特有的命令方法. 以
%
为开始, 例如%run
, 使用%magic
可以查看所有魔术命令的帮助. - 可以将shell命令结果传递给变量名, 如:
contents=!ls
- 如果要将python变量传递给命令, 可以使用
%变量名
或{变量名}
, 如!echo {a}
和!echo $a
- 如果要获得Shell变量的值, 使用
$$变量名
, 例如!echo $$PATH
, 但注意print $$PATH
无效. - 如果要获得Shell变量的值并传递给变量, 可以使用
%env 变量名
, 例如a=%env PATH
.
关于某个魔术命令的帮助, 可以使用
?
, 如%bookmark?
.
%edit 编辑文件并运行
%ed
或 %edit
编辑一个文件并执行,如果只编辑不执行,用 %ed -x filename
即可。默认使用命令行下的默认编辑器,一般是vi
。修改编辑器, 可以export EDITOR="/usr/local/bin/vim”
.
%run 命令运行脚本
运行python脚本:
%run aa.py
-
%run -i aa.py
--继承变量
%timeit 快速计算运行时间
在一个交互式会话中,我们可以使用%timeit
魔法命令快速测量代码运行时间。相同的命令会在一个循环中多次执行(默认100次),多次运行时长的平均值作为该命令的最终评估时长。
-
-n
选项 : 可以控制命令在单次循环中执行的次数 -
-r
选项 : 控制执行循环的次数。
In [24]: %timeit [x*x for x in range(100000)]
100 loops, best of 3: 15.3 ms per loop
%pylab 进行交互式计算
%pylab
魔法命令可以使numpy
和matplotlib
中的科学计算功能生效,这些功能被称为基于向量和矩阵的高效操作,交互可视化特性。它能够让我们在控制台进行交互式计算和动态绘图。
In [1]: %pylab
# Using matplotlib backend: MacOSX
# Populating the interactive namespace from numpy and matplotlib
In [2]: x=pylab.linspace(-10.,10.,1000)
In [3]: plot(x,sin(x))
Out [3]: [<matplotlib.lines.Line2D at 0x11f03a150>]
%pylab
所产生的matplotlib对象(像图片)的显示会弹出一个新窗口.%pylab inline
可以使用行内模式显示结果(尤其图片), 但在普通命令行中并不支持, 在qtconsole
和notebook
中是支持的.
常用的魔术命令
-
%magic
: 查看模式命令的帮助.%lsmagic
, 简单地列出可用的魔法命令. -
%quickref
: 所有ipython的特定语法和魔法的快速参考. -
%ls
: 显示目录下的内容.%ll
或%ls -l
可以显示更详细的信息 -
%cd
: 切换工作目录。 -
%pwd
: 显示当前工作目录的路径。 -
%env
: 显示环境变量, 不加参数显示所有环境变量. -
%reset
: 重置IPython, 清理相关环境对象, 但历史信息会被保留. -
%clear
: 清屏, 相当于!clear
-
%mv
,%cp
,%mkdir
,%rm
,%rmdir
,%more
,%less
用法同Bash. -
%pdoc 对象
: 可以查看对象的文档字符串.
默认快捷键
-
ctrl + u
: 删除该行光标前的内容 -
ctrl + k
: 删除该行光标后的内容 -
ctrl + l
: 清空屏幕 -
ctrl + p/n
: 上/下一条历史记录. -
ctrl + c
: 中止运行程序 -
ctrl + e
: 跳转到行最后 -
ctrl + a
: 跳转到行首(可能与Windows热键冲突,是全选). -
ctrl + r
: 反向搜索历史 -
ctrl + d
: 删除光标后一个字符,Backspace
是前一个字符. 另外也可以打断一些运行. -
ctrl + t
: 调换光标前两个字符的位置. 不怎么常用.. -
ctrl + l
: 清屏 (该行以上)
Reference
- 官方文档
- 官方文档:魔法命令
- 学习IPython进行交互式计算和数据可视化或detail可以下载pdf版本. 也可以在Tacey Wong的博客来查看.
- 简书SeanCheney: 利用Python进行数据分析·第2版, 附录B 更多关于IPython的内容. 有兴趣可以订阅腾讯云SeanCheney的专栏
网友评论