zoukankan      html  css  js  c++  java
  • 一起用ipython

    安装

    安装python2版本的软件包就用命令

       pip install ipython

    安装python3版本对应的软件包就用命令

      pip3 install ipython

     

    进入了ipython,ipython会提示您键入下面四个命令之一去试着使用ipython:

    命令名 说明

    ?   ipython特性的介绍和概述
    %quickref   一份手册,包含了所有的命令
    help    python的帮助系统
    object? 关于object的详细信息,如果键入object??会更详细

    首先是推荐您看一下quickref的。您注意到了,这个命令以%开头。所有以%开头的方法,都是所谓的魔术方法(Magic function),
    也就是ipython内置的一些方法。

    需要注意的是,魔术方法有%和%%之分,比如%timeit和%%timeit。这玩意在ipython中有专门的叫法,
    前者叫line magic后者叫cell magic。

    顾名思义,前者是专门针对一行的命令,后者针对多行的命令(这是notebook中的术语,关于notebook请参阅最后),如是而已。
    所有的魔术方法都可以查看源码,仔细阅读的话,对自己写代码也很有裨益,具体方法是在魔术方法后面加??,譬如%timeit??。
    代码是经过高亮和格式化的,

    应该很容易阅读才是。如果您有着奇妙的好奇心的话,想必刚才也尝试过%timeit?。区别是,这次没有源码出现对吧。
    但是其他信息,比如type什么的指导性内容会显示出来。

    Tab键自动完成

    
    

    在shell中输入表达式时,只要按下Tab键,当前命令控件中任何与输入的字符串相匹配的变量(对象、函数等)就会被找出来。

    
    

    ps.之前我发现我的ipython没有Tab键自动补全功能,tab键的功能是缩进。最后 pip install pyreadline即可解决。

    
    

    下面这个例子,输入b.后按下<tab>键即可得到下图的结果。

    
    

    
    

    内省

    
    

    在变量的前面或后面加上一个问号(?)就可以将有关该对象的一些通用信息显示出来。这就叫做对象的内省。

    
    

    
    

    如果对象是一个函数或实例方法,则其docstring也会被现实出来。

    
    

    使用??还将显示出该函数的源代码。

    
    

    
    

    一些字符串配以通配符(*)即可显示出所有与该通配符表达式相匹配的名称。

    中断正在执行的代码

    按下Ctrl-C就会引发一个KeyboardInterrupt。除了一些非常特殊的情况下,绝大部分python程序都会立即停止执行

     

    执行剪贴板中的代码

    书上说使用ctrl+shift+v将剪贴板的代码片段粘贴出来,然而windows系统似乎不可行,所以鼠标右键粘贴好了。

    %paste可以承载剪贴板中的一切文本,并在shell中以整体形式执行。

    %cpaste跟%paste差不多,只不过它多出了一个用于粘贴代码的特殊提示符而已。如果发现粘贴的代码有错,只需要按下ctrl+c即可终止%cpaste提示如。

     

    键盘快捷键

    在此粘贴给大家作为备忘。

    1. Ctrl-P    或上箭头键 后向搜索命令历史中以当前输入的文本开头的命令
    2. Ctrl-N   或下箭头键 前向搜索命令历史中以当前输入的文本开头的命令
    3. Ctrl-R   按行读取的反向历史搜索(部分匹配)
    4. Ctrl-Shift-v   从剪贴板粘贴文本
    5. Ctrl-C   中止当前正在执行的代码
    6. Ctrl-A   将光标移动到行首
    7. Ctrl-E   将光标移动到行尾
    8. Ctrl-K   删除从光标开始至行尾的文本
    9. Ctrl-U   清除当前行的所有文本译注12
    10. Ctrl-F   将光标向前移动一个字符
    11. Ctrl-b   将光标向后移动一个字符
    12. Ctrl-L   清屏

    魔术命令

    魔术关键字以%开头,如果automagic打开了,则不用输入%,否则需要,使用automagic可以切换状态
    可以使用%magic参看所有魔术方法

    命令 说明
    %quickref 显示IPython的快速参考
    %magic 显示所有魔术命令的详细文档
    %debug 从最新的异常跟踪的底部进入交互式调试器
    %hist 打印命令的输入(可选输出)历史
    %pdb 在异常发生后自动进入调试器
    %paste 执行剪贴板中的Python代码
    %cpaste 打开一个特殊提示符以便手工粘贴待执行的Python代码
    %reset 删除interactive命名空间中的全部变量/名称
    %page OBJECT 通过分页器打印输出OBJECT
    %run script.py 在IPython中执行一个Python脚本文件
    %prun statement 通过cProfile执行statement,并打印分析器的输出结果
    %time statement 报告statement的执行时间
    %timeit statement 多次执行statement以计算系综平均执行时间。对那些执行时  间非常小的代码很有用
    %who、%who_ls、%whos 显示interactive命名空间中定义的变量,信息级别/冗余度可变
    %xdel variable 删除variable,并尝试清除其在IPython中的对象上的一切引用

    env 显示环境变量
    ed或edit 编辑一个文件并执行
    ed -x filename 编辑文件不执行
    edit 3:10 编辑3:10行的指令并执行
    hist 显示历史纪录,可以用-n增加行号
    hist 3:10 显示3-10行的历史纪录
    bg function 把function函数放到后台执行
    pwd 当前目录
    pycat filename 语法高亮显示一个文件
    macro name 1:10 把1:10行的代码设为name宏
    save filename 1:10 把1:10行代码保存到文件中
    time statement 计算一段代码执行时间
    timeit statement 自动选择重复和循环次数计算一段代码执行时间
    run filename 执行一个文件,如果希望防止执行的,需要增加if name == “main“:
    autoindent 如果启用,粘贴的时候会自动缩进代码
    reset 重置所有变量
    Bash命令
    cls 清除屏幕
    colors

    基于Qt的富GUI控制台

    Ipython团队开发了一个基于Qt框架(其目的是为终端应用程序提供诸如内嵌图片、多行编辑、语法高亮之类的富文本剪辑功能)的GUI控制台。

    使用

    ipython qtconsole --pylab=inline

    来启动的话可为其添加绘图功能。

    ps.这一步刚开始无法执行,我的解决方法是:

    pip install qtconsole,就可以运行了- -..

     

    %run命令

    在ipython会话环境中,所有文件都可以通过%run命令当做Python程序来运行。

    输入 %run 路径+python文件名称即可。

    ipython一般的使用,通常只是为了测试一行或者几行代码是否能够执行。究其原因,还是因为命令行中书写长代码相较于在文件中写代码并不方便,一方面是格式,另一方面是在命令行中写代码,一旦中间代码写错,修改起来还是很麻烦的。于是我们不得不一次次退出ipython,去python xxx.py执行。或者tmux开两个窗口来测试。

    但是其实ipython已经提供了很方便的机制用来执行一个脚本,就是%run命令,%run可以简化为run。

    使用起来类似于熟悉的python test.py,使用run test.py就好。run命令还可以附加选项,常用的有-t选项,这个会在脚本执行完后,打印出执行的cpu timings。如果指定了-t选项,后面可以跟一个-Nx,x代表一个数字。表示重复执行x次。

    另外比较好用的是-d选项,这个会在pdb中运行脚本。后跟-bxx打断点。个人没有什么python调试的经验,您有兴趣可以亲自尝试。

    还有一个-p选项,这个选项会开启python profiler,从而打印出详细的执行时间、函数调用等等信息供优化参考。

    %timeit

    这个命令用来测试一条命令执行的时间,一般而且,会重复100次运行这个命令,然后取出最好的3个结果取平均值。

    试着执行下面的命令:

    In[1]: %timeit [x*x for x in range(100000)]
    同样,可以指定选项。

    -n指定重复次数,默认100

    -r是取多少个结果的平均值,默认是3

    顺带一提,%timeit测出来的结果远比真实运行更快,原因是,timeit执行中,会暂时关闭掉垃圾回收(gc)。

    shell中使用python变量

    其实这个不算是魔术方法啦,只是单独列出来也不太合适,所以也就写在这里。

    请看下面这段代码:

    folder = 'data'
    mkdir $folder
    cd %folder

    注意到了么,mkdir是一个魔术方法,它是%mkdir的一个链接,%mkdir事实上就是shell中的mkdir方法。而folder是一个python变量。但是,确实,shell下的命令访问了python的变量,只是在变量名前面加了$。如果您熟悉shell脚本的话,这种方式应该很亲切才对。

    %bookmark

    这个方法通常用来记忆路径,譬如说,您每次都需要cd进一个叫做github/miko/loli/shoujo的目录,这时候,您可以对这个路径做一个书签,%bookmark shoujo github/miko/loli/shoujo,这样以后就可以直接cd shoujo这样。

    顺便,如果没有指定路径,会默认使用当前路径。

    %alias

    正如名字揭示的,这个方法用来指定别名。不过,ipython的%alias还能进行参数传递。

    看看下面这段:

    In [1]: %alias largest ls -1sSh | grep %s
    In [2]: largest circles

    很容易懂不是么?%alias后面跟的那个参数就是别名,然后可以通过%s来指定一个参数,使用时传入。

    %store

    默认的,别名只会存在于本次会话中,如果希望下次还能使用这个别名,使用%store方法存下来吧。%store latest

    另外,没保存也不要紧,%store -r会恢复上次会话的别名。

    %hist

    ipython中history会保存所有会话中的记录,所以隔一年什么的记录就会相当多啦。

    虽然我知道你们都会用up,down来寻找历史记录……恩,试试ctrl+r,有惊喜。

    另外,类似于hist 3-7什么的,好像也不用我解释就是了。

    -g选项和grep类似,可以查找些东西出来,然后-n显示行号,-f保存历史记录到文件中去,-p把行号显示为n:>>>,-n把输入的结果显示出来

  • 相关阅读:
    SQLSERVER Tempdb的作用及优化
    sqlserver分区表索引
    Install the mongdb
    mysql常用参数监控
    Mysql由浅入深
    nginx配置文件优化
    ping主机不通邮件报警
    top结果解释
    了解MQ
    kafka安装部署
  • 原文地址:https://www.cnblogs.com/awakenedy/p/9259387.html
Copyright © 2011-2022 走看看