zoukankan      html  css  js  c++  java
  • ipython与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
    http://blog.sina.com.cn/s/blog_6fb8aa0d0101r5o1.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 这种动态语言才可以做到。
  • 相关阅读:
    什么是结构化数据?什么是半结构化数据?
    安卓图表引擎AChartEngine(一)
    Android中通过pid获取app包名
    Android USER 版本与ENG 版本的差异--MTK官方解释
    Android 各层中日志打印功能的应用
    Android音频系统之AudioFlinger(二)
    Android音频系统之AudioFlinger(一)
    Android音频系统之音频框架
    第1章 音频系统
    Android音频系统之AudioPolicyService
  • 原文地址:https://www.cnblogs.com/hanggegege/p/6071570.html
Copyright © 2011-2022 走看看