美文网首页胶水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