zoukankan      html  css  js  c++  java
  • 【python】ipython与python的区别

    【python】ipython与python的区别

      (2014-06-05 12:27:40)
      分类: Python
    http://mba.shengwushibie.com/itbook/BookChapter.asp?id=8745
    http://www.cnblogs.com/yangze/archive/2011/07/11/2103040.html
    http://matrix.42qu.com/10735149
    http://www.cnblogs.com/weishun/p/great-ipython.html
     
    IPython的开发者吸收了标准解释器的基本概念,在此基础上进行了大量的改进,创造出一个令人惊奇的工具。在它的主页上是这么说的:“这是一个增强的交互式Python shell。”具有tab补全,对象自省,强大的历史机制,内嵌的源代码编辑,集成Python调试器,%run机制,宏,创建多个环境以及调用系统shell的能力。
     
    1)IPython与标准Python的最大区别在于,Ipython会对命令提示符的每一行进行编号。如下图:
    【python】ipython与python的区别

    【python】ipython与python的区别
    对比两个例子,其输出变量值似乎相同,其实仍有差别。print语句使用非正式的(unofficial)字符串表达式,而简单变量名(bare variable name)使用了正式的(official)字符串表达式。在处理自定义类而不是内置类时,这种差异会体现得非常明显。
    In [10]: class DoubleRep(object):  
    ....: def __str__(self):  
    ....: return 'Hi, I'm a __str__'  
    ....: def __repr__(self):  
    ....: return 'Hi, I'm a __repr__'  
    ....:  
    ....:  
    In [11]: dr = DoubleRep()  
    In [12]: print dr  
    Hi, I'm a __str__  
    In [13]: dr  
    Out[13]: Hi, I'm a __repr__ 
     
    2)tab补全
    作为例子,我们先引入 sys 模块,之后再输入 sys. (注意有个点),此时按下 tab 键,IPython 会列出所有 sys 模块下的方法和属性。
    【python】ipython与python的区别
    接着上面的例子,我们输入 sys?再回车,这样会显示出 sys 模块的 docstring及相关信息。很多时候这个也是很方便的功能。
    【python】ipython与python的区别

    3)历史机制
    hist可以快速查看那些输入的历史记录。
    hist -n可以快速查看并去掉历史记录中的序号,这样你就可以方便的将代码复制到一个文本编辑器中。
    一个更简单的方法是edit加Python列表的切片(slice)语法:
    edit 4:7 % 将第4,5,6,7句代码导出到编辑器
     
    4)断点调试:如果你的程序是由命令行开始执行的,即在命令行下输入 python foo.py(大部分 Python 程序都是),那么你还可以利用 IPython 在你的程序任意地方进行断点调试。
    在你程序中任意地方,加入如下语句:
    from IPython.Shell import IPShellEmbed
    IPShellEmbed([])()
    注意:最近 IPython 发布了 0.11 版本,各方面变化都非常大,API 也经过了重新设计。如果你使用的是 0.11 那么上面两行对应的是这样的:
    from IPython import embed
    embed()
    再和平常一样运行你的程序,你会发现在程序运行到插入语句的地方时,会转到 IPython 环境下。你可以试试运行些指令,就会发现此刻 IPython 的环境就是在程序的那个位置。你可以逐个浏览当前状态下的各个变量,调用各种函数,输出你感兴趣的值来帮助调试。之后你可以照常退出 IPython,然后程序会继续运行下去,自然地你在当时 IPython 下执行的语句也会对程序接下来的运行造成影响。
    这个方法是在这里(http://lukeplant.me.uk/blog/posts/exploratory-programming-with-ipython/)看到的。想象一下,这样做就像让高速运转的程序暂停下来,你再对运行中的程序进行检查和修改,之后再让他继续运行下去。这里举一个例子,比如编写网页 bot ,你在每取回一个页面后你都得看看它的内容,再尝试如何处理他获得下一个页面的地址。运用这个技巧,你可以在取回页面后让程序中断,再那里实验各种处理方 法,在找到正确的处理方式后写回到你的代码中,再进行下一步。这种工作流程只有像 Python 这种动态语言才可以做到。
  • 相关阅读:
    python数据分析008_Matplotlib绘柱图,饼图,散点图
    python数据分析007_使用Matplotlib绘折线图
    python数据分析006_Python 2D绘图库Matplotlib
    python数据分析005_pandas的时间序列
    python数据分析004_多层索引的取值和排序
    python数据分析003_数据的合并筛选排序
    Megacli 简易使用
    k8s ingress 增加 跨域配置
    k8s 1.15 版本生产线上证书时间调整(亲测)
    grafana 展示 k8s prometheus
  • 原文地址:https://www.cnblogs.com/fkissx/p/5595211.html
Copyright © 2011-2022 走看看