【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会对命令提示符的每一行进行编号。如下图:

对比两个例子,其输出变量值似乎相同,其实仍有差别。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
模块下的方法和属性。

接着上面的例子,我们输入 sys?再回车,这样会显示出 sys 模块的 docstring及相关信息。很多时候这个也是很方便的功能。

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 这种动态语言才可以做到。

时间: 2024-10-14 19:37:52

【python】ipython与python的区别的相关文章

ipython及Python初体验

阅读目录: Python环境体验 Python编辑器 ipython安装 Python提示符 Python初体验 print和变量 变量操作 内建函数:方法 数学运算:简单算术.随机数 关于模块 一.Python环境体验 1.常见Python编辑器介绍 1.在linux下使用vim 编辑Python脚本时,推荐--没有道理-- 2.Eclipse 3.notepad++:挺好用的一款编辑工具 4.IDLE (官方自带)交互式的开发语言集成环境 5.pycharm  第三方的工具:ipython

安装python,setuptools,get-pip.py,ipython构建python开发环境

安装python,setuptools,get-pip.py,ipython,构建python开发环境 安装环境:Centos6.7 ,安装时选项为桌面,增加了开发工具包. 1.python2.7.11安装 下载源代码: wget https://www.python.org/ftp/python/2.7.11/Python-2.7.11.tgz 安装: ./configure make make install 2.安装setuptools wget https://pypi.python.o

python中is和==的区别

Python中  is 和 == 的区别的笔记 在 Python 中一切都是对象,毫无例外整数也是对象,对象之间比较是否相等可以用==,也可以用is.==和is操作的区别是: is比较的是两个对象的id值是否相等,也就是比较俩对象是否为同一个实例对象,是否指向同一个内存地址. ==比较的是两个对象的内容是否相等,默认会调用对象的__eq__()方法. 清楚is和==的区别之后,对此也许你有可能会遇到下面的这些困惑,于是就有了这样一篇文章,试图把Python中一些隐晦的东西趴出来,希望对你有一定的

python-环境准备python,ipython

Python-2.7.6和ipython-1.2.1编译安装 [[email protected] ~]# lsanaconda-ks.cfg  Documents  install.log         ipython-1.2.1.tar.gz  Pictures  Python-2.7.6         TemplatesDesktop          Downloads  install.log.syslog  Music                 Public    Pyth

python中==和is的区别

Python中的对象包含三要素:id.type.value, 其中id用来唯一标识一个对象,type标识对象的类型,value是对象的值.is判断的是a对象是否就是b对象,是通过id来判断的:==判断的是a对象的值是否和b对象的值相等,是通过value来判断的.如下代码或许可以帮助我们理解.>>> a = 1>>> b = 1.0>>> a is bFalse>>> a == bTrue>>> id(a)127770

python -> lambda与def的区别

lambda可以定义一个匿名函数,而def定义的函数必须有一个名字.这应该是lambda与def两者最大的区别. 与Javascript不同的是,python中匿名函数与非匿名函数需要使用不同的语法来定义.这是因为: lambda是一个expression,不是一个statement. lambda is an expression, not a statement. 因此lambda表达式可以出现在def无法出现的地方.比如list comprehension. lambda表达式可以匿名也可

Python 2 和Python 3的区别

Python 2 和Python 3 的区别: 1. 直接运行python,其实是调用的python2,输入python3 ,其实是调用的是python3 2. 在python 2中需要提前标示出utf-8 的中文输入字符,# -*- coding: utf-8 -*-  或  #coding=utf-8 , 但是在python 3中可以直接输入,不用强调有中文: 3. 在python 2 和python 3中,在input 功能上有很大的区别,在python 中,input 是直接运算. py

python关键字is与 ==的区别

python关键字is与 ==的区别 最近在学习Python,总结一下小知识点. Python中的对象包含三要素:id.type.value 其中id用来唯一标识一个对象,type标识对象的类型,value是对象的值 is判断的是a对象是否就是b对象,是通过id来判断的 ==判断的是a对象的值是否和b对象的值相等,是通过value来判断的 示例如下: >>> a=100 >>> b=100.0 >>> a is b False >>>

Python与其它编程语言的区别

Python与Java的区别 学习起来Python要比Java简单快速的多,java从c++这样的系统语言中继承了很多语法和复杂性,而Python的语法非常简洁,大大提高编写效率. Python与C#语言的区别 Python是解释型语言,不需要额外的编译过程,而C#必须编译后执行.另外,Python程序全部是开源的,但是C#就不是了,Python程序可以跨平台,不需要修改就可以运行在Windows和Linux等系统平台. Python & C++,Perl Python比C++等这类语言,更容易