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. hibernate 注解 boolean问题解决方案

    1.JPA本身是不支持boolean.可以用Hibernater自带的标签.修改如下. @Column(name = "manager_log") @org.hibernate.a ...

  2. 图床神器:七牛云 + Mpic + FScapture

    概述 最近在搞Markdown的东西,遇到了一个很棘手的问题,即图片的显示:通用的图片,可以直接网上搜索,但有时候需要自己截一些图或者对下载的图片进行修改,在本地存储完全没有问题,但Markdown写 ...

  3. hibernate的native sql查询

    在我们的hibernate中,除了我们常用的HQL查询以外,还非常好的支持了原生的SQL查询,那么我们既然使用了hibernate,为什么不都采用hibernate推荐的HQL查询语句呢?这是因为HQ ...

  4. 基于axis1.4的webservice实例

    1.准备工作: 概念:SOAP(简单对象访问协议).WSDL(web服务描述语言).XML(可扩展标记语言).axis(阿帕奇可扩展交互系统) (1)     下载axis1.4,将axis1.4中的 ...

  5. windows 自动移动maven jar包到jmeter 文件夹下面

    jmeter 自动移动maven jar包到jmeter 文件夹下面 bat 文件 rem 本文件放在jmeter 脚本maven项目根目录下面,和pom.xml在同一个文件夹下面 rem 预置条件, ...

  6. jquery判断选择元素是否存在

    有时候我们需要对jquery选择器选中的元素进行判断是否存在,如果存在才进行某些操作,不存在就不进行,那么如何判断元素是否存在,代码如下: //判断是否存在特定ID值的元素 ){ alert(&quo ...

  7. django 用户管理相关的表

    Django 用户管理相关的表: create table django_content_type ( /* 内容类型表 */ id ) not null auto_increment, app_la ...

  8. jmeter经验----java 读取文件中文乱码问题

    很少写java io的代码,今天整了一个发现 本地调试好好的,放到jmeter里就打印乱码.一番折腾,终于搞定~直接上代码: List<Order> orderList = new Arr ...

  9. C++中关于指针运算符->的重载问题

    #include<iostream>using namespace std;struct date{ int year; int month; int day;};struct Perso ...

  10. [转载]关于generate用法的总结【Verilog】

    转载自http://www.cnblogs.com/nanoty/archive/2012/11/13/2768933.html Abtract generate语句允许细化时间(Elaboratio ...