四、Ipython 交互式解释器

1、Ipython 简介

IPython外一个文本编辑器

Windows系统下是IPythonnotepad++,Linux系统下是IPython加vim配合使用,写起代码来体验很流畅,很容易获取到写代码时候的那种“流体验”。

IPython的设计目的是在交互式计算和软件开发这两个方面最大化地提高生产力,它鼓励一种“执行-探索”的工作模式,支持matplotlib等库的绘图操作。同时IPython还提供一个基于WEB的交互式浏览器开发环境(Jupyter Notebook),用起来也很不错。

2、安装 Ipython

1、安装 python-devel

python-dev或python-devel称为是python的开发包,其中包括了一些用C/Java/C#等编写的python扩展在编译的时候依赖的头文件等信息。

比如:我们在编译一个用C语言编写的python扩展模块时,因为里面会有#include等这样的语句,因此我们就需要先安装python-devel开发包

执行以下命令安装即可(需要有 epel 源支持):

yum -y install python-devel

2、安装 ipython

pip3 install ipython

3、启动 ipython

[root@localhost ~]# ipython
Python 3.6.5 (default, Mar 6 2019, 06:36:12)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.3.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]:

4、退出 ipython

[root@localhost ~]# ipython
Python 3.6.5 (default, Mar 6 2019, 06:36:12)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.3.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: exit
[root@localhost ~]#

5、使用 ipython

[root@localhost ~]# ipython
Python 3.6.5 (default, Mar 6 2019, 06:36:12)
Type 'copyright', 'credits' or 'license' for more informat
IPython 7.3.0 -- An enhanced Interactive Python. Type '?'
#定义一个字符串
In [1]: str = "hello"
#tab显示字符串类型的方法
In [2]: str.
capitalize() encode() format()
casefold() endswith() format_map()
center() expandtabs() index() >
count() find() isalnum()

[root@localhost ~]# ipython
Python 3.6.5 (default, Mar 6 2019, 06:36:12)
Type 'copyright', 'credits' or 'license' for more informat
IPython 7.3.0 -- An enhanced Interactive Python. Type '?'

In [1]: str = "hello"
# 定义一个数字型
In [2]: int = 1
# tab显示数字类型的方法
In [3]: int.
bit_length() from_bytes() real
conjugate() imag to_bytes()
denominator numerator
# 执行系统命令,加!是以变量的形式执行命令 In [4]: !pwd/root

In [5]: pwd
Out[5]: '/root'

In [6]: cd /home/
/home

In [7]: pwd
Out[7]: '/home'

In [8]: ls

In [9]: ls /
bin@ etc/ lib64@ opt/ run/ sys/ var/
boot/ home/ media/ proc/ sbin@ tmp/
dev/ lib@ mnt/ root/ srv/ usr/

In [10]:

3、ipython 附内容(预留为作业)

基础用法

1、Tab键自动补全

和其他命令行环境的Tab自动补全功能类似,不过会隐藏那些以下划线开头的方法和属性(为了防止内容太多)。厉害的是哪怕是在python字符串中也可以自动补全类似文件路径的字符串。比如:

2、内省

在方法或变量的前面或后面一个问(?)就可以将有关该方法或变量的一些通用信息都显示出来,这叫做内省;使用??还可以显示函数的源代码。见下:

3、?和通配符结合使用搜索命名空间

4、%run命令

%run xxx.py`:可以执行一个python脚本`xxx.py`,脚本是在一个空的命名空间中运行的。成功运行脚本后,在IPython中可以使用脚本中定义的变量和函数。

如果希望在脚本中能访问IPython之前定义的变量和函数,那么需要用-i数执行:

`%run -i xxx.py

5、执行剪贴板中的代码

%paste:直接执行。 %cpaste:可以修改后再执行。

6、IPython键盘快捷键Ctrl + P或上箭头:后向搜索命令历史记录中以当前输入的文本开头的命令。

Ctrl + N或下箭头:前向搜索命令历史记录中以当前输入的文本开头的命令。

Ctrl + R:按行读取的反向历史搜索(部分匹配)。

Ctrl + Shift + V:从剪贴板中粘贴文本。

Ctrl + C:终止当前正在执行的代码。

Ctrl + A:将光标移动到行首。

Ctrl + E:将光标移动到行尾。

Ctrl + K:删除从光标开始到行尾的文本。

Ctrl + U:删除从行首到光标处的文本。

Ctrl + F:将光标向前移动一个字符。

Ctrl + B:将光标向后移动一个字符。

Ctrl + L:清屏。

7、魔术命令

以%开头的一些命令,比如%run就是一个魔术命令,可以使用%run?来查看其详细用法。%quickref:显示IPython的快速考。

%magic:显示所有魔术命令的详细文档。

%debug:从最新的异常跟踪的底部进入交互式调试器。

%hist:打印命令的输入(可选输出)历史。

%pdb:在异常发生后自动进入调试器。

%paste:执行剪贴板中的python代码。

%cpaste:打开一个特殊特提示符以便手工粘贴待执行的python代码。

%reset:删除interactive命名空间中的全部变量/名称。

%page OBJECT:通过分页器打印输出OBJECT。

%run xxx.py:执行xxx.py脚本文件。

%prun statement:通过cProfile执行statement,并打印分析器的输出结果。

%time statement:计算statement的执行时间。

%timeit statement:多次执行(次数可以通过数配置)statement以计算平均执行时间。对那些执行时间非常短的代码很有用。

%who

:显示interactive命名空间中定义的变量,如下:

%who_ls:显示interactive命名空间中定义的变量(列表形式),如下:


%whos:显示interactive命名空间中定义的变量(详情形式),如下:

%xdel variable:删除变量variable,并尝试清除其在IPython中的对象上的一切引用

8、打开pylab模式

启动IPython时使用:ipython --pylab,这样就可以在IPython命令行中进行绘图等操作了,如下:


9、 输入和输出变量

最近的两个输出结果分别保存在下划线和双下划线两个变量中,如下:


10、记录输入输出过的变量

某一行的输入变量:_iX(X为行) 某一行的输出变量:_X(X为行号) 见下: