楼主: lastwinner

[参考文档] Python 研究(Dive Into Python)

[复制链接]
论坛徽章:
484
ITPUB北京香山2007年会纪念徽章
日期:2007-01-24 14:35:02ITPUB北京九华山庄2008年会纪念徽章
日期:2008-01-21 16:50:24ITPUB北京2009年会纪念徽章
日期:2009-02-09 11:42:452010新春纪念徽章
日期:2010-03-01 11:04:552010数据库技术大会纪念徽章
日期:2010-05-13 10:04:272010系统架构师大会纪念
日期:2010-09-04 13:35:54ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512011新春纪念徽章
日期:2011-02-18 11:43:32ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:54
391#
 楼主| 发表于 2006-7-20 01:58 | 只看该作者
第 7 章 正则表达式
  • 7.1. 概览
    如果你要解决的问题利用字符串函数能够完成,你应该使用他们。他们快速、简单且容易阅读,而对于快速、简单、可读性强的代码等方面有很多内容。但是,如果你发现你用了许多不同的字符串函数和 if语句来处理一个特殊情况,或者你组合使用了 split 、join 等函数而导致用一种奇怪的甚至读不下去的方式理解列表,此时,你也许需要转到正则表达式了。
  • 7.2. 个案研究:街道地址
    这一系列的例子是由我几年前日常工作中的现实问题启发而来的,当时我需要从一个老化系统中导出街道地址,在将他们导入新的系统之前,进行清理和标准化。(看,我不是只将这些东西堆到一起,他有实际的用处)。这个例子展示我如何处理这个问题。
  • 7.3. 个案研究:罗马字母
    你可能经常看到罗马数字,即使你没有意识到他们。你可能曾经在老电影或者电视中看到他们(“版权所有 MCMXLVI” 而不是 “版权所有1946”),或者在某图书馆或某大学的贡献墙上看到他们(“成立于 MDCCCLXXXVIII”而不是“成立于1888”)。你也可能在某些文献的大纲或者目录上看到他们。这是一个表示数字的系统,他能够真正回溯到远古的罗马帝国(因此而得名)。
  • 7.4. 使用{n,m} 语法
    在 前面的章节,你处理了相同字符可以重复三次的情况,在正则表达式中有另外一个方式来表达这种情况,并且使代码的可读性更好。首先来看我们在前面的例子中使用的方法。
  • 7.5. 松散正则表达式
    迄今为止,你只是处理过被我称之为“紧凑”类型的正则表达式。正如你曾看到的,它们难以阅读,即使你清楚正则表达式的含义,你也不能保证六个月以后你还能理解它。你真正所需的就是利用内联文档(inline documentation)。
  • 7.6. 个案研究: 解析电话号码
    迄今为止,你主要是匹配整个模式,不论是匹配上,还是没有匹配上。但是正则表达式还有比这更为强大的功能。当一个模式确实匹配上时,你可以获取模式中特定的片断,你可以发现具体匹配的位置。
  • 7.7. 小结
    这只是正则表达式能够完成工作的很少一部分。换句话说,即使你现在备受打击,相信我,你也不是什么也没见过了。

使用道具 举报

回复
论坛徽章:
484
ITPUB北京香山2007年会纪念徽章
日期:2007-01-24 14:35:02ITPUB北京九华山庄2008年会纪念徽章
日期:2008-01-21 16:50:24ITPUB北京2009年会纪念徽章
日期:2009-02-09 11:42:452010新春纪念徽章
日期:2010-03-01 11:04:552010数据库技术大会纪念徽章
日期:2010-05-13 10:04:272010系统架构师大会纪念
日期:2010-09-04 13:35:54ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512011新春纪念徽章
日期:2011-02-18 11:43:32ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:54
392#
 楼主| 发表于 2006-7-20 01:58 | 只看该作者
第 8 章 HTML 处理
  • 8.1. 概览
    我经常在 comp.lang.python 上看到关于如下的问题: “ 怎么才能从我的 HTML 文档中列出所有的 [头|图像|链接] 呢?” “怎么才能 [分析|解释|munge] 我的 HTML 文档的文本,但是不要标记呢?” “怎么才能一次给我所有的 HTML 标记 [增加|删除|加引号] 属性呢?” 本章将回答所有这些问题。
  • 8.2. sgmllib.py 介绍
    HTML 处理分成三步: 将 HTML 分解成它的组成片段,对片段进行加工,接着将片段再重新合成 HTML。第一步是通过 sgmllib.py 来完成的,它是标准 Python 库的一部分。
  • 8.3. 从 HTML 文档中提取数据
    为了从 HTML 文档中提取数据,将 SGMLParser 类进行子类化,然后对想要捕捉的标记或实体定义方法。
  • 8.4. BaseHTMLProcessor.py 介绍
    SGMLParser 自身不会产生任何结果。它只是分析,分析,再分析,对于它找到的有趣的东西会调用相应的一个方法,但是这些方法什么都不做。SGMLParser 是一个 HTML 消费者 (consumer): 它接收 HTML,将其分解成小的、结构化的小块。正如您所看到的,在 前一节 中,您可以通过将 SGMLParser 子类化来定义一个类,它可以捕捉特别标记和生成有用东西,如一个网页中所有链接的一个列表。现在我们将沿着这条路更深一步。我们要定义一个可以捕捉 SGMLParser 所丢出来的所有东西的一个类,接着重建整个 HTML 文档。用技术术语来说,这个类将是一个 HTML 生产者 (producer)。
  • 8.5. locals 和 globals
    我们先偏离一下 HTML 处理的主题, 讨论一下 Python 如何处理变量。 Python 有两个内置的函数, locals 和 globals, 它们提供了基于 dictionary 的访问局部和全局变量的方式。
  • 8.6. 基于 dictionary 的字符串格式化
    有另外一种字符串格式化的形式,它使用 dictionary 而不是值的 tuple。
  • 8.7. 给属性值加引号
    在 comp.lang.python 上的一个常见问题是 “我有一些 HTML 文档,属性值没有用引号括起来,并且我想将它们全部括起来,我怎么才能实现它呢?” [4] (一般这种事情的出现是由于一个项目经理加入到一个大的项目中来,而他又抱着 HTML 是一种标记语言的教条,要求所有的页面必须能够通过 HTML 校验器的验证。而属性值没有被引号括起来是一种常见的对 HTML 规范的违反。) 不管什么原因,未括起来的属性值通过将 HTML 送进 BaseHTMLProcessor 可以容易地修复。
  • 8.8. dialect.py 介绍
    Dialectizer 是 BaseHTMLProcessor 的简单 (和拙劣) 的派生类。它通过一系列的替换对文本块进行了处理,但是它确保在 ... 块之间的任何东西不被修改地通过。
  • 8.9. 全部放在一起
    到了该将迄今为止我们已经学过并用得不错的东西放在一起的时候了。我希望您专心些。
  • 8.10. 小结
    Python 向您提供了一个强大工具,sgmllib.py,可以通过将 HTML 结构转变为一种对象模型来进行处理。可以以许多不同的方式来使用这个工具。

使用道具 举报

回复
论坛徽章:
484
ITPUB北京香山2007年会纪念徽章
日期:2007-01-24 14:35:02ITPUB北京九华山庄2008年会纪念徽章
日期:2008-01-21 16:50:24ITPUB北京2009年会纪念徽章
日期:2009-02-09 11:42:452010新春纪念徽章
日期:2010-03-01 11:04:552010数据库技术大会纪念徽章
日期:2010-05-13 10:04:272010系统架构师大会纪念
日期:2010-09-04 13:35:54ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512011新春纪念徽章
日期:2011-02-18 11:43:32ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:54
393#
 楼主| 发表于 2006-7-20 01:58 | 只看该作者
第 9 章 XML 处理
  • 9.1. 概览
    处理 XML 有两种基本的方式。一种叫做 SAX(“Simple API for XML”),它的工作方式是,一次读出一点 XML 内容,然后对发现的每一个元素调用一个方法。(如果你读了 第 8 章 HTML 处理,这应该听起来很熟悉,因为这是 sgmllib 工作的方式。)另一种方式叫做 DOM (“Document Object Model”),它的工作方式是,一次性读入整个 XML 文档,然后使用 Python 类创建一个内部表示形式(以树结构进行连接)。Python 拥有这两种解析方式的标准模块,但是本章只涉及 DOM。
  • 9.2. 包
    实际上解析一个 XML 文档是很简单的:只要一行代码。但是,在你接触那行代码前,需要暂时岔开一下,讨论一下包。
  • 9.3. XML 解析
    正如我说的,实际解析一个 XML 文档是非常简单的:只要一行代码。从这里出发到哪儿去就是你自己的事了。
  • 9.4. Unicode
    Unicode 是一个系统,用来表示世界上所有不同语言的字符。当 Python 解析一个 XML 文档时,所有的数据都是以unicode的形式保存在内存中的。
  • 9.5. 搜索元素
    通过一步步访问每一个节点的方式遍历 XML 文档可能很乏味。如果你正在寻找些特别的东西,又恰恰它们深深埋入了你的 XML 文档,有个捷径让你可以快速找到它:getElementsByTagName 。
  • 9.6. 访问元素属性
    XML 元素可以有一个或者多个属性,一旦你已经解析了一个 XML 文档,访问它们就太简单了。
  • 9.7. Segue
    OK,that's it for the hard-core XML stuff. 下一章将继续使用相同的示例程序,但是焦点在于能使程序更加灵活的其它方面:使用输入流处理,使用 getattr 进行方法分发,并使用命令行标识允许用户重新配置程序而无需修改代码。

使用道具 举报

回复
论坛徽章:
484
ITPUB北京香山2007年会纪念徽章
日期:2007-01-24 14:35:02ITPUB北京九华山庄2008年会纪念徽章
日期:2008-01-21 16:50:24ITPUB北京2009年会纪念徽章
日期:2009-02-09 11:42:452010新春纪念徽章
日期:2010-03-01 11:04:552010数据库技术大会纪念徽章
日期:2010-05-13 10:04:272010系统架构师大会纪念
日期:2010-09-04 13:35:54ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512011新春纪念徽章
日期:2011-02-18 11:43:32ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:54
394#
 楼主| 发表于 2006-7-20 01:58 | 只看该作者
第 10 章 Scripts 和 Streams
  • 10.1. 抽象输入源
    Python 的最强大力量之一是它的动态绑定,并且动态绑定最强大的用法之一是类文件(file-like)对象。
  • 10.2. 标准输入、输出和错误
    UNIX 用户已经对标准输入,标准输出和标准错误的概念非常熟悉了。这一节是为其他不熟悉的人准备的。
  • 10.3. 缓冲节点查询
    kgp.py 使用了多种技巧,对你进行 XML 处理而言它们或许有用。第一个就是,使用输入文档的结构稳定特征来构建节点缓冲。
  • 10.4. 查找节点的直接子节点
    解析 XML 文档时,另一个有用的己技巧是查找某个特定元素的所有直接子元素。例如,在语法文件中,一个 ref 元素可以有数个 p 元素,其中每一个都可以包含很多东西,包括其他的 p 元素。你只要查找作为 ref 孩子的 p 元素,不用查找其他 p 元素的孩子 p 元素。
  • 10.5. 通过节点类型创建独立的处理句柄 Creating separate handlers by node type
    第三个有用的 XML 处理技巧是将你的代码基于节点类型和元素名称分散到逻辑函数中。解析后的 XML 文档是由各种类型的节点组成的,每一个都是通过 Python 对象表示的。文档本身的根层次通过一个Document对象表示。Document还包含了一个或者多个Element对象(for actual XML tags),其中的每一个可以包含其它的Element对象,Text对象(for bits of text),或者Comment对象(for embedded comments)。 Python 使编写分离每个节点类型逻辑的分发器非常容易。
  • 10.6. 处理命令行参数
    Python 完备支持创建在命令行运行的程序,并且连同命令行参数和短长样式来指定各种选项。这些并非是 XML 特定的,但是这样的脚本可以充分使用命令行处理,看来是时候提一下它了。
  • 10.7. 全部放在一起
    你已经了解很多基础的东西。让我们回来看看所有片段是如何整合到一起的。
  • 10.8. 小结
    Python 带有解析和操作 XML 文档非常强大的库。这个 minidom 接收一个 XML 文件并将其解析为 Python 对象,提供了对任意元素的随即访问。进一步,本章展示了如何利用 Python 创建一个“真实”独立的命令行脚本,连同命令行标志,命令行参数,错误处理,甚至从前一个程序的管道接收输入的能力。

使用道具 举报

回复
论坛徽章:
484
ITPUB北京香山2007年会纪念徽章
日期:2007-01-24 14:35:02ITPUB北京九华山庄2008年会纪念徽章
日期:2008-01-21 16:50:24ITPUB北京2009年会纪念徽章
日期:2009-02-09 11:42:452010新春纪念徽章
日期:2010-03-01 11:04:552010数据库技术大会纪念徽章
日期:2010-05-13 10:04:272010系统架构师大会纪念
日期:2010-09-04 13:35:54ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512011新春纪念徽章
日期:2011-02-18 11:43:32ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:54
395#
 楼主| 发表于 2006-7-20 01:58 | 只看该作者
第 11 章 HTTP Web 服务
  • 11.1. 概览
    在讲解 如何下载 web 页 和 如何从 URL 解析 XML时, 你已经学习了关于 HTML 处理 和 XML 处理, 接下来让我们来更全面地探讨有关 HTTP web 服务的主题。
  • 11.2. 避免通过 HTTP 重复地获取数据
    假如说你想用 HTTP 下载资源, 例如一个 Atom feed 汇聚。你不仅仅想下载一次; 而是想一次又一次地下载它, 如每小时一次, 从提供 news feed 的站点获得最新的消息。让我们首先用一种直接而原始的方法来实现它, 然后看看如何改进它。
  • 11.3. HTTP 的特性
    这里有五个你必须关注的 HTTP 重要特性。
  • 11.4. 调试 HTTP web 服务
    首先, 让我们开启 Python HTTP 库的调试特性并查看网络线路上的传输过程。 这对本章的全部内容都很有用, 因为你将添加越来越多的特性。
  • 11.5. 设置 User-Agent
    改善你的 HTTP web 服务客户的第一步就是用 User-Agent 适当地鉴别你自己。为了做到这一点, 你需要远离基本的 urllib 而深入到 urllib2。
  • 11.6. 处理 Last-Modified 和 ETag
    既然你知道如何在你的 web 服务请求中添加自定义的 HTTP 头信息, 接下来看看添加 Last-Modified 和 ETag 头信息的支持。
  • 11.7. 处理重定向
    你可以使用两种不同的自定义 URL 头信息来处理永久重定向和临时重定向。
  • 11.8. 处理被压缩的数据
    你要支持的最后一个重要的 HTTP 特性是压缩。 许多 web 服务具有发送压缩数据的能力, 这可以将网络线路上传输的大量数据消减 60% 以上。 尤其适用于 XML web 服务, 因为 XML 数据 的压缩率可以很高。
  • 11.9. 全部放在一起
    你已经看到了构造一个职能的 HTTP web 客户的所有片断。 现在让我们看看如何将它们整合到一起。
  • 11.10. 小结
    openanything.py 及其函数现在可以完美地工作了。

使用道具 举报

回复
论坛徽章:
484
ITPUB北京香山2007年会纪念徽章
日期:2007-01-24 14:35:02ITPUB北京九华山庄2008年会纪念徽章
日期:2008-01-21 16:50:24ITPUB北京2009年会纪念徽章
日期:2009-02-09 11:42:452010新春纪念徽章
日期:2010-03-01 11:04:552010数据库技术大会纪念徽章
日期:2010-05-13 10:04:272010系统架构师大会纪念
日期:2010-09-04 13:35:54ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512011新春纪念徽章
日期:2011-02-18 11:43:32ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:54
396#
 楼主| 发表于 2006-7-20 01:59 | 只看该作者
第 12 章 SOAP Web 服务
  • 12.1. 概览
    你用 Google, 对吧? 它是一个很流行的搜索引擎。 你是否曾经希望能以程序化的方式访问 Google 的搜索结果呢? 现在你能做到了。 下面是一个用 Python 搜索 Google 的程序。
  • 12.2. 安装 SOAP 库
    与本书中的其他代码不同, 本章依赖的库不是 Python 预安装的。
  • 12.3. 步入 SOAP
    调用远程函数是 SOAP 的核心功能。有很多提供公开 SOAP 访问的服务器提供用于展示的简单功能。
  • 12.4.  SOAP 网络服务查错
    SOAP 提供了一个很方便的方法用以查看背后的情形。
  • 12.5. WSDL 介绍
    SOAPProxy 类本地方法调用并透明地转向到远程 SOAP 方法。 正如你所看到的,这是很多的工作,SOAPProxy 快速和透明地完成他们。它没有做到的是提供任何方法自省的手段。
  • 12.6. 以 WSDL 进行 SOAP 内省
    就像网络服务舞台上的所有事物, WSDL 也经历了一个充满明争暗斗而且漫长多变的历史。 我不打算讲述这段令我伤心的历史。 还有一些其他的标准提供相同的支持,但 WSDL 还是胜出,所以我们还是来学习一下如何使用它。
  • 12.7. 搜索 Google
    让我们回到这章开始时你看到的那段代码,获得比当前气温更有价值和令人振奋的信息。
  • 12.8.  SOAP 网络服务故障排除
    是的,SOAP 网络服务的世界中也不总是欢乐和阳光。 有时候也会有故障。
  • 12.9. 小结
    SOAP 网络服务是很复杂的,雄心勃勃的它试图涵盖网络服务的很多不同应用。这一章我们接触了它的一个简单应用。

使用道具 举报

回复
论坛徽章:
484
ITPUB北京香山2007年会纪念徽章
日期:2007-01-24 14:35:02ITPUB北京九华山庄2008年会纪念徽章
日期:2008-01-21 16:50:24ITPUB北京2009年会纪念徽章
日期:2009-02-09 11:42:452010新春纪念徽章
日期:2010-03-01 11:04:552010数据库技术大会纪念徽章
日期:2010-05-13 10:04:272010系统架构师大会纪念
日期:2010-09-04 13:35:54ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512011新春纪念徽章
日期:2011-02-18 11:43:32ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:54
397#
 楼主| 发表于 2006-7-20 01:59 | 只看该作者
第 13 章 单元测试
  • 13.1. 罗马数字程序介绍 II
    在前面的章节中,你迅速“深入”并试图以最快的速度理解了这个程序。 " 既然你已对 Python 有了一定的了解,那么接下来将回顾这个程序并从其代码被开发之前入手。
  • 13.2. 深入
    现在你已经定义了你的转换程序所应有的功能,下面一步会有点儿出乎你的意料:你将要开发一个测试组件(test suite)来测试你未来的函数以确保它们工作正常。没错:你将为还未开发的程序开发测试代码。
  • 13.3. 介绍 romantest.py
    这是将被开发并保存为 roman.py 的罗马数字转换程序的完整测试组件(test suite)。很难立刻看出他们是如何协同工作的,似乎所有类或者方法之间都没有关系。这是有原因的,而且你很快就会明了。
  • 13.4. 正面测试(Testing for success)
    单元测试的基础是构建独立的测试用例(test case)。 一个测试用例只回答一个关于被测试代码的问题。
  • 13.5. 负面测试(Testing for failure)
    使用有效输入确保函数成功通过测试还不够,你还需要测试无效输入导致函数失败的情形。但并不是任何失败都可以,必须如你预期地失败。
  • 13.6. 完备性检测(Testing for sanity)
    你经常会发现一组代码中包含互逆函数,它们通常是转换函数,一个把 A 转换为 B ,另一个把 B 转换为 A。 在这种情况下,创建“完备性检测”可以使你在由 A 转 B 再转 A 的过程中不会出现丢失精度和取整等错误。

使用道具 举报

回复
论坛徽章:
484
ITPUB北京香山2007年会纪念徽章
日期:2007-01-24 14:35:02ITPUB北京九华山庄2008年会纪念徽章
日期:2008-01-21 16:50:24ITPUB北京2009年会纪念徽章
日期:2009-02-09 11:42:452010新春纪念徽章
日期:2010-03-01 11:04:552010数据库技术大会纪念徽章
日期:2010-05-13 10:04:272010系统架构师大会纪念
日期:2010-09-04 13:35:54ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512011新春纪念徽章
日期:2011-02-18 11:43:32ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:54
398#
 楼主| 发表于 2006-7-20 01:59 | 只看该作者
第 14 章 以测试优先为原则的编程
  • 14.1. roman.py, 第 1 阶段
    到目前为止,单元测试已经完成,是时候开始编写被单元测试测试的代码的时候了。你将分阶段地完成这个工作,因此开始时所有的单元测试都是失败的,但在逐步完成 roman.py 的同时你会看到它们一个个地通过(测试) 。
  • 14.2. roman.py, 第 2 阶段
    现在你有了 roman 模块的大概框架, 到了开始写代码以通过测试的时候了。
  • 14.3. roman.py, 第 3 阶段
    现在 toRoman 对于有效的输入(1 到 3999 整数)已能正确工作,是正确处理那些无效输入(任何其他输入)的时候了。
  • 14.4. roman.py, 第 4 阶段
    现在 toRoman 完成了,是开始编写 fromRoman 的时候了。感谢那个将每个罗马数字和对应整数关连的完美数据结构,这个工作不比 toRoman 函数复杂。
  • 14.5. roman.py, 第 5 阶段
    现在 fromRoman 对于有效输入能够正常工作了,是揭开最后一个谜底的时候了:使它正常工作于无效输入的情况下。这意味着要找出一个方法检查一个字符串是不是有效的罗马数字。这比 toRoman 中验证有效的数字输入 困难, 但是你可以使用一个强大的工具:正则表达式。

使用道具 举报

回复
论坛徽章:
484
ITPUB北京香山2007年会纪念徽章
日期:2007-01-24 14:35:02ITPUB北京九华山庄2008年会纪念徽章
日期:2008-01-21 16:50:24ITPUB北京2009年会纪念徽章
日期:2009-02-09 11:42:452010新春纪念徽章
日期:2010-03-01 11:04:552010数据库技术大会纪念徽章
日期:2010-05-13 10:04:272010系统架构师大会纪念
日期:2010-09-04 13:35:54ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512011新春纪念徽章
日期:2011-02-18 11:43:32ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:54
399#
 楼主| 发表于 2006-7-20 02:00 | 只看该作者
第 15 章 重构
  • 15.1. 处理 bugs
    尽管你很努力地编写全面的单元测试,但是 bug 还是会出现。 我所说的 “bug” 是什么呢? Bug 是你还没有编写的测试用例。
  • 15.2. 应对需求变化
    尽管你竭尽努力地分析你的客户,并点灯熬油地提炼出精确的需求,但需求还是会是不断变化。 大部分客户在看到产品前不知道他们想要什么。即便知道,也不擅于精确表述出他们的有效需求。即便能表述出来,他们在下一个版本一定会要求更多的功能。 因此你需要做好更新测试用例的准备以应对需求的改变。
  • 15.3. 重构
    全面的单元测试带来的最大好处不是你的全部测试用例最终通过时的成就感;也不是被责怪破坏了别人的代码时能够证明自己的自信。最大的好处是单元测试给了你自由去无情地重构。
  • 15.4. 后记
    聪明的读者在学习 前一节 时想得会更深入一层。 现在写的这个程序中最令人头痛(性能负担)的是正则表达式,它是必需的,因为没有其它方法来处理罗马数字。但是,它们只有 5000 个,为什么不一次性地构建一个查询表来读取? 不必用正则表达式凸现了这个主意的好处。 你建立了整数到罗马数字查询表的时候,罗马数字到整数的逆向查询表也构建了。
  • 15.5. 小结
    单元测试是一个强大的概念,使用得当的话既可以减少维护成本又可以增加长期项目的灵活性。 同样重要的是要意识到单元测试并不是“灵丹妙药”,也不是“银弹”。 编写好的测试用例很困难,保持其更新更需要磨练(特别是当顾客对修复严重的 Bug 大呼小叫之时)。 单元测试不是其它形式测试的替代品,比如说功能性测试、集成测试以及可用性测试。但它切实可行且功效明显,一旦相识,你会反问为什么以往没有应用它。

使用道具 举报

回复
论坛徽章:
484
ITPUB北京香山2007年会纪念徽章
日期:2007-01-24 14:35:02ITPUB北京九华山庄2008年会纪念徽章
日期:2008-01-21 16:50:24ITPUB北京2009年会纪念徽章
日期:2009-02-09 11:42:452010新春纪念徽章
日期:2010-03-01 11:04:552010数据库技术大会纪念徽章
日期:2010-05-13 10:04:272010系统架构师大会纪念
日期:2010-09-04 13:35:54ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512011新春纪念徽章
日期:2011-02-18 11:43:32ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:54
400#
 楼主| 发表于 2006-7-20 02:00 | 只看该作者
第 16 章 有效编程(Functional Programming)
  • 16.1. 概览
    在 第 13 章 单元测试 中,你学会了单元测试的哲学。在 第 14 章 以测试优先为原则的编程 中你步入了 Python 基本的单元测试操作,在 第 15 章 重构 部分,你看到单元测试如何另大规模重组变得容易。 本章将在这些程序范例的基础上,集中关注于超越单元测试本身的更高级的 Python 特有技术。
  • 16.2. 找到路径
    从命令行运行 Python 代码时,知道所运行代码所在磁盘上的存储位置有时候是有必要的。
  • 16.3. 过滤已访问列表
    你已经熟识了 应用列表遍历来过滤列表。 这里介绍的是达到相同效果的另一种令很多人感觉清晰的实现方法。
  • 16.4. 关联已访问列表
    你对使用 列表遍历 将列表关联起来的做法已经熟知。 另一种方法可以完成同样的工作:使用内建 map 函数。 它的工作机理和 filter 函数类似。
  • 16.5. 数据中心思想编程
    现在的你,可能正抓耳挠腮地狠想,为什么这样比使用 for 循环和直接调用函数好。这是一个非常好的问题。通常这是一个程序观问题。 使用 map 和 filter 强迫你围绕数据进行思考。
  • 16.6. 动态导入模块
    好了,大道理谈够了。让我们谈谈动态倒入数据吧。
  • 16.7. 全部放在一起
    你已经学习了足够的知识,现在来分析本章范例代码的前七行:读取一个目录并从中导入选定的模块。
  • 16.8. 小结
    regression.py 程序及其输出到现在应该很清楚了。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表