8-9<X16>regression.py 函数编程

TableOfContents

  1. 本章标题:存在多年的问题,Functional Programming 有效编程 (./) 函数编程

  2. “退化测试”和前面的“回归测试”都是好名字。我又一次把选择权交给了 Google……191,000 : 1,890,000,“回归测试”获胜。
    • “回归”是标准的数学用语(eg. linear regression线性回归),而“退化”好像……

  3. sample 一律译为“样例”。

    • 原译“范例”,给人的感觉好像 Mark 写的程序就是样板了;
    • 和前面章节一致。
  4. 为和前面章节一致,list comprehension 一律译为“列表解析”(原译“列表遍历”),list mapping 一律译为“列表映射”(原译“列表关联”)。

  5. 为和前面章节一致,标题中出现的“介绍XXX”一律改为“XXX介绍”

8.1 概览

  1. Para 1:……你看到单元测试如何令大规模重组 <!> 变得容易 (./) 重构

  2. Para 2I actually use this script as part of the build process for this book; I have unit tests for several of the example programsBR ……实际上这是我构建本书自身代码的一部分。我为几个样例程序都编写了单元测试。BR (./) 实际上这是本书的构建代码的一部分;……

  3. 例16.2上:把这段代码放在本书其他样例代码相同的目录下运行之,模块 test.py <!> 中的所有单元测试将被找到并一起被运行。 (./) moduletest.py

  4. 例16.2, (2)The next 5 tests are from...BR 接下来的五个代码来自于…… (./) 测试 (!) (3)中作类似修改。

8.2 找到路径

  1. Para 1:从命令行运行 python 代码时,知道所运行代码 {X} 在磁盘上的存储位置有时候是有必要的。

  2. Para 2This is one of those obscure little tricks that is virtually impossible to figure out on your own, but simple to remember once you see it. The key to it is sys.argv. As you saw in Chapter 9 XML Processing, this is a list that holds the list of command-line arguments. However, it also holds the name of the running script, exactly as it was called from the command line, and this is enough information to determine its location. 这是一个你很难自己弄明白,却一看到就会想起的小麻烦。核心功能来源于 sys.argv。正如你在 第 9 章 XML 处理 中看到的,它包含了很多命令行参数。当然就像从命令行中运行他们一样,它也同样记录了运行脚本的名字,这些信息足以令我们确定文件的位置。BR (./) 这是一个不那么容易想起,但一想起就很容易解决的小麻烦。答案是 sys.argv。正如你在 第 9 章 XML 处理 中看到的,它包含了很多命令行参数。它也同样记录了运行脚本的名字,和你调用它时使用的命令一摸一样。这些信息足以令我们确定文件的位置。BR (!) 后面多处作了与第二点类似的修改。

  3. 例16.3, (3):os.path.abspath 是这里的关键。它接受的路径名可以是部分的甚至是完全空白,却返回完整有效的路径名BR (./) ……但总能返回完整有效的路径名。

  4. 例16.4, (2)一个空字符串调用 os.path.abspath 当前的工作路径,与 os.getcwd()的效果相同。BR (./) 用空字符串调用 os.path.abspath 将返回当前的工作路径,……

  5. 例16.5上:……这意味着如果你正工作于 /usr/ 目录,os.path.abspath('bin/../local/bin') 将会返回 /usr/local/bin。它以尽可能简单的方式格式化路径名。BR (./) 它把路径名格式化为尽可能简单的形式。

  6. 例16.5, (2):如果脚本是以不完整路名被运行的,sys.argv[0] 还是会包含命令行中 {X} 出现的一切。

  7. Para -1This technique will allow you to re-use this regression.py script on multiple projects. Just put the script in a common directory, then change to the project's directory before running it. All of that project's unit tests will be found and tested, instead of the unit tests in the common directory where regression.py is located.BR 这个技术允许你在多个项目中重用 regression_filename; 代码。只需要将这个代码放在一个普通目录中,在运行项目前将路径更改为项目的目录。所有项目的路径将被找到并进行测试工作,而不仅仅局限于 regression_filename; 所在目录的单元测试。BR (./) 这个技术允许你在多个项目中重用 regression_filename; 代码。只需要将这个代码放在一个普通目录中,在运行项目前将路径更改为项目的目录。项目中所有的单元测试被找到并运行,而不仅仅局限于 regression_filename; 所在目录的单元测试。

8.3 重识列表过滤

  1. 本节标题Filtering lists revisitedBR 过滤已访问列表 (./) 重识列表过滤

  2. 例16.7, (4):你可以通过 for 循环的方式完成相同的工作。根据你编程的背景,……BR (./) 取决于你的编程背景

  3. 例16.8, (2)This is a compiled regular expression.BR 一个复杂的正则表达式。BR (./)一个预编译的正则表达式。

  4. 同上:编译后的对象将含有接受一个被寻找 <!> 字符串作为参数的 search 方法。 (./) 待寻找