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. 两段检验系统生成的identityHashCode是否重复的代码

    前言:承接上一篇hashCode和identityHashCode 的关系,下面的两段简单的程序主要是检验一下系统生成的identityHashCode是否存在重复的情况. 1:可以自由控制生成对象的 ...

  2. 【struts2】Struts2的运行流程

    1)前提条件 在讲解流程之前,假设我们已经建立了的一个名为strutsDeepen的web工程,该工程仅仅实现了简单的用户登陆与欢迎界面.具体的实现为: 在web.xml中配置了Struts2的过滤器 ...

  3. 更改Eclipse下Tomcat的部署目录 ,防止上传的文件是到eclipse的克隆的tomcat上的webapp,而不是tomcat本身的webapp

    使用eclipse开发是因为机器不够用myeclipse,eclipse也比myeclipse清爽很多,启动速度也快.这里的搭建开发环境使用: Jdk1.6+Tomcat6+Eclipse JEE, ...

  4. process credentials(三)

    主要内容包括: 1.进程描述符中Realtime Mutex相关数据结构的初始化 2.子进程如何复制父进程的credentials 3.per-task delay accounting的处理 4.子 ...

  5. ftk学习记(滑动条篇)

    [声明:版权全部,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 前一篇说到了combox.就先看一下效果吧. 说完了combox,就谈谈今天的滑动条.滑动条,当然 ...

  6. CListCtrl选中某行

    原文链接: http://blog.csdn.net/wxq1987525/article/details/7461461 1.设置CListCtrl选中行 m_list.SetItemState( ...

  7. C#数组之 []、List、Array、ArrayList应用

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  8. Eclipse 快速提取一个方法 (重构)

    选择一块代码并将其转换为一个方法.Eclipse 会自动地推知方法参数及返回类型. 我们有的时候方法太大,但是自己复制粘贴重构又比较麻烦 eclispe拥有这个功能 alt+shift+m 也可以右键 ...

  9. linux 安装 Headless Chrome

    http://blog.csdn.net/goodzyw/article/details/77269875 https://chromedriver.storage.googleapis.com/in ...

  10. SpringBoot不使用模板引擎直接返回html

    一.在resource目录下面建立文件夹,里面方静态页面. 路径:src\main\resources\static\page\index.html 访问:http://localhost:8080/ ...