美文网首页胶水Python
IPython基础使用

IPython基础使用

作者: 爱折腾的大懒猪 | 来源:发表于2018-12-22 21:57 被阅读20次
  • 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的运行顺序标志.

In [x] 输入输出显示

Tab补全与自动缩进

  • IPython直接支持tab进行变量/命令/方法/属性/模块的自动补全. 而python shell支持并不好. 甚至支持比IDLE还要强大(主要是方法/属性/模块显示上要更强大)
  • 调用提示是一个重要的功能, 而且很有特色. 在ipython中, 进行自动补全时, 如果有多个可选项, 就会出现调用提示, 可以使用上下左右键进行选择, 方便快速调用.
属性方法调用提示
  • 变量.后按Tab可以调用变量的方法和属性. 变量.atab就可以快速查看a开头的属性和方法. 再按上下左右键进行选择.
  • 直接输入部分命令名后按Tab, 可以获得命令的提示 (包括魔法命令).
  • 命令提示时, 甚至可以提示当前目录下匹配的文件文件夹.
    命令提示

另外, ipython还支持通配符*. 例如输入*Error?然后确认 (需要最后一个?结尾). 可以列出结尾为Error匹配的对象. 这有时比一般补全和调用提示还要强大.

方便的帮助

这是ipython特色功能, IDLE都没有. 使用???可以快速获取命令/函数或者变量的相关帮助.

  • 对象??对象 可以获得对象(包括内置方法, 函数, 对象方法属性等)的一些通用信息, 这些信息又叫内省, 包括类型Type, 字符串化信息String form, Docstring, 长度Length, 文件File等等.

    ?显示内省
  • 对象????对象 使用两个问号, 可以显示源代码帮助. (内建对象或者其他来源于动态库的对象不显示源代码, 有时显示的帮助和?不太一样.)

??显示源代码帮助

使用help方法获得的帮助信息往往比???更多(但不显示源代码,类型等), 例如可以列出详细的对象所拥有的属性和方法.
试一试: 输入help(str)来查阅字符串类型str的帮助, 也再试试上述示例的三个对象range,hello,bhelp查看.

使用历史

  • 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 魔法命令可以使numpymatplotlib中的科学计算功能生效,这些功能被称为基于向量和矩阵的高效操作,交互可视化特性。它能够让我们在控制台进行交互式计算和动态绘图。

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 可以使用行内模式显示结果(尤其图片), 但在普通命令行中并不支持, 在qtconsolenotebook中是支持的.

常用的魔术命令

  • %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

  1. 官方文档
  2. 官方文档:魔法命令
  3. 学习IPython进行交互式计算和数据可视化detail可以下载pdf版本. 也可以在Tacey Wong的博客来查看.
  4. 简书SeanCheney: 利用Python进行数据分析·第2版, 附录B 更多关于IPython的内容. 有兴趣可以订阅腾讯云SeanCheney的专栏

相关文章

网友评论

    本文标题:IPython基础使用

    本文链接:https://www.haomeiwen.com/subject/pwrekqtx.html