1 探索式编程

前面介绍过几个Python的Interactive Shell,对于Python, Ruby这类动态语言来说,一个交互式的shell(用 emacs的术语来说,叫做REPL,也就是Read-Evaluation-Print Loop)很重要,你可以在里面试一下某个表达式是否 正确,某个包是怎样使用的,用dir(obj)看看一个对象都有些啥属性,用help(foo)查看帮助。

当代码写到某个位置,我们不太清楚某个函数返回的是个什么东西,就可以在程序中嵌入这样的shell(参考: Embedding a Python Shell in a Python Script | write-only by Gregg Lind ),然后程序运行到这里,我们就 可以在shell中查看变量,查看某个对象的文档,尝试调用某个函数,有的shell前端还提供了增强的方法让你可以 详细地查看(inspect)一个对象(比如IPython里面的 —— 习惯了这种方式之后,Java上那种传统的调试器相对来说, 就觉得很弱了。

不知道什么时候,我的脑袋里面就冒出来一个名词:探索式编程。但后来搜索了一下,发现并没有这样一个说法, 看来是我杜撰了(估计我是受了“探索式测试”这个名词的影响 —— 毕竟我是个搞测试工具的)。

2 IdleX

前一段一个不搞编程的朋友想学一点编程,我给推荐了Python,他也不愿意到处去找各种IDE、编辑器,就着 Python自带的IDLE就开始写起代码来了。我想起以前看到过一个IDLE的改进项目IdleX,对IDLE做了多种增强,一看 之下,觉得还真挺不错的,值得推荐。

IPython里面有个notebook 概念,你可以一次输入多行交给shell执行,每次输入的多行组成一个cell,而相关的 多个cell以及它们的输出组合起来,构成一个notebook。

但不知道为为什么,我总觉得这个notebook用的上的时候少,而IdleX提供了一个变种:我们仍然是直接编辑一个代 码文件,但可以特殊的分隔符(它这里是"## ")将代码分隔为一段一段的(它称为SubCode),然后每次可以选择 一个或者多个SubCode发送给shell执行。

IdleX的其它优点:

  1. 跟IDLE一样,是用tk写的界面,跨平台
  2. 轻量级
  3. 支持IPython,算是IPython图形界面前端的最小版本,比IPython官方的Qt版本安装起来方便太多了
  4. 对IDLE编辑器的增强:多文件编辑、Code Browser、显示行号,直接调出python273.chm等等
  5. 对IDLE的shell的增强:可用上下光标键调出前后历史命令,在多次会话间保留历史,等等
  6. 支持运行GUI代码,比如Tkinter, GTK, Qt, Qt4, PySide, wxPython (其实主要是个GUI mainloop问题)

详细说明请参阅 IdleX Features

Date: 2014-06-04 21:48:14 HKT

Author: Ba Manzi

Org version 7.8.11 with Emacs version 23

Validate XHTML 1.0

[Python] 探索性编程与idleX的更多相关文章

  1. Python Socket 编程——聊天室示例程序

    上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和客户端的代码了解基本的 Python Socket 编程模型.本文再通过一个例子来加强一下对 Socket 编程的 ...

  2. python多线程编程

    Python多线程编程中常用方法: 1.join()方法:如果一个线程或者在函数执行的过程中调用另一个线程,并且希望待其完成操作后才能执行,那么在调用线程的时就可以使用被调线程的join方法join( ...

  3. python 面向对象编程学习

    1. 问题:将所有代码放入一个py文件:无法维护 方案:如果将代码才分放到多个py文件,好处: 1. 同一个名字的变量互相不影响 2.易于维护 3.引用模块: import module 2.包:解决 ...

  4. Python 网络编程(二)

    Python 网络编程 上一篇博客介绍了socket的基本概念以及实现了简单的TCP和UDP的客户端.服务器程序,本篇博客主要对socket编程进行更深入的讲解 一.简化版ssh实现 这是一个极其简单 ...

  5. Python 网络编程(一)

    Python 网络编程 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. ...

  6. Python函数式编程:从入门到走火入魔

    一行代码显示"爱心" >>> print]+(y*-)**-(x**(y*<= ,)]),-,-)]) Python函数式编程:从入门到走火入魔 # @fi ...

  7. python核心编程(第二版)习题

    重新再看一遍python核心编程,把后面的习题都做一下.

  8. Python黑客编程2 入门demo--zip暴力破解

    Python黑客编程2 入门demo--zip暴力破解 上一篇文章,我们在Kali Linux中搭建了基本的Python开发环境,本篇文章为了拉近Python和大家的距离,我们写一个暴力破解zip包密 ...

  9. Python核心编程这本书的一些错误

    <Python核心编程第二版>这本书比<Python基础教程第二版修订版>详细很多,丰富了很多细节,虽然它是一本经典的入门书,但我发现还是存在一些明显的错误.在面向对象编程这一 ...

随机推荐

  1. Spring 注解 hibernate 实体方法 <property name="packagesToScan" value="com.sise.domain"/>

    <property name="annotatedClasses"> <list> <value>com.sise.domain.Admin&l ...

  2. ASP.NET Core网站初探

    原文地址:https://blog.csdn.net/iml6yu/article/details/74530679 目录结构如下图   目录: Properties:属性,记录了项目属性的配置文件. ...

  3. 轻量级验证码生成插件webutil-licenseImage源码与实例应用

    webutil-licenseImage 插件内置4种验证码样式,支持用户扩展.自定义样式实现简单验证码. 源码脱管地址: http://code.google.com/p/licenseimage/ ...

  4. 《JAVA与模式》之解释器模式 (转载)

    一.引子 其实没有什么好的例子引入解释器模式,因为它描述了如何构成一个简单的语言解释器,主要应用在使用面向对象语言开发编译器中:在实际应用中,我们可能很少碰到去构造一个语言的文法的情况. 虽然你几乎用 ...

  5. RecyclerView的滚动事件OnScrollListener研究

      (1)滚动事件分类 列表的滚动一般分为两种: 1.手指按下 -> 手指拖拽列表移动 -> 手指停止拖拽 -> 抬起手指 2.手指按下 -> 手指快速拖拽后抬起手指 -> ...

  6. 2014百度之星第一题Energy Conversion

    Energy Conversion Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  7. SharePoint CAML In Action——Part I

    在SharePoint中,我们经常要对List进行操作,比如要从List中取出相应的ListItem,利用CAML是个好办法.在没了解CAML之前,我是这样取数据的: MyList.Items.Cas ...

  8. 15. 使用Apache Curator装饰ZooKeeper

    Apache ZooKeeper是为了帮助解决复杂问题的软件工具,它可以帮助用户从复杂的实现中解救出来. 然而,ZooKeeper只暴露了原语,这取决于用户如何使用这些原语来解决应用程序中的协调问题. ...

  9. apache apr的编译和引用

    各种巧合吧,需要从JAVA转C,经过这一段时间的心理折磨,还是决定先把精力放到C上. 想快速的提高自己,学习相关语言的经典的源码是唯一的“捷径”,从Apache apr开始吧. 一.下载源代码 官网地 ...

  10. springboot 利用configureMessageConverters add FastJsonHttpMessageConverter 实现返回JSON值 null to ""

    /** * 文件名:@WebConfiguration.java <br/> * @author tomas <br/> import com.alibaba.fastjson ...