DiveIntoPythonZh/2007-07-01

7-1<X4> apihelper.xml 自省的威力

  1. Para 1:……Python 中任何东西都是对象 <!> ,…… (!) 为了和前面章节的用词统一, (./) 万物皆对象

4.1 概览

  1. 例4.2上:……它可以使用 <!> 任何……作为参数…… (./) 接受

  2. 例4.2, Para 1:缺省地,程序输出进行了格式化处理 {i} ,以使其易于阅读

4.2 使用可选参数和命名参数

  1. 例4.4下, 提示:调用函数时唯一需要 <!> 做的事情就是为每一个必备参数指定值…… (./) 必须

4.3 使用 type、str、dir 和其它内置函数

  1. Para 1:...This was actually a conscious design decision,...
    ……其实这是一个非常明智的设计决策……
    (!) decision固然是“决策”的意思,但我想此处Mark的意思应该是“策略”而不是“决策”。
    (./) ……其实这是一个非常明智的设计策略……

  2. Para 2:添加了脚注:
    这对于处理多种数据类型的帮助者函数 <footnote><para>帮助者函数,原文是 helper function,也就是我们在前文所看到的诸如 <literal>odbchelper</literal>、<literal>apihelper</literal> 这样的函数。——译注</para></footnote> 非常有用。
    (!) helper function这个术语的出现对于英文阅读者十分自然(helper已经出现在函数名中了),但中文版应该予以说明。

4.3.1 type 函数

pass

4.3.2 str 函数

  1. Para 1:The str coerces data into a string. Every datatype can be coerced into a string.
    str 将数据强制转型 <!> 为字符串。每种数据类型都可以强制转型为字符串。
    (!) coerce在国内不是通译为“强制转换”吗,我真不知道YuLin是怎么会想到用“转型”这个词的。(台湾译风的影响?)
    (./) 转换

  2. 例4.6, (4):You'll use this to your advantage in the info function...
    你将会使用这一点来提高你的 info 函数
    (./) 你将会使用这一点来改进你的 info 函数

  3. 例4.7, (1):li 是一个列表,所以 dir(li) 返回 {i} 一个包含所有列表方法的一个 {X} 列表。

  4. 例4.8上:如果参数对象是可调用的那么返回 true,否则返回 false。
    (./) 如果参数对象是可调用的,返回 true;否则返回 false。

  5. 例4.8, (1):...but the module contains a lot of useful constants like this string.punctuation, which contains all the standard punctuation characters.
    但是在这个模块中包含了许多有用的变量比如 string.punctuation,这个模块包含了所有标准的标点符号字符。
    (!) 估计是一个which把译者给搞懵了,竟然稀里糊涂地翻译成了“模块”
    (./) 但是在这个模块中包含了许多有用的变量,例如 string.punctuation,这个字符串包含了所有标准的标点符号字符。

4.3.3 内置函数

  1. Para 2:像这样考虑的好处是,是你可以获取 __builtin__ 模块信息的…… (!) 估计是typo (./) 你是

  2. Para 2:猜到什么了吗, {i} 现在我们的 Python 有一个称为 info 的函数。 (!) 从上下文来看,info函数明显是作者自己写的,而不是Python原有的。

  3. Para 2, Line -1:……应该看上去已经 {i} 很熟悉了。 (!) 这里是为了中文表达的顺畅

4.4 通过getattr获取对象引用

  1. 例4.10, (3):如果不深信它是多么的有用 (./) 确信

  2. 例4.12, (3):现在你可以简单地调用输出函数就像调用其它函数一样了。
    (./) 现在你可以简单地调用输出函数,就像调用其它函数一样。

4.5 过滤列表

  1. Para 3:A filter expression can be any expression that evaluates true or false (which in Python can be almost anything)
    过滤器表达式可以是返回值为真或者假(在 Python 中是 几乎任何东西)的任何表达式。
    (!) 又一次没有把握语序,括号里面的内容解说的是expression而非false。况且大多数 Python 表达式的值是真,而不是假。
    (./) 过滤器表达式可以是返回值为真或者假的任何表达式(在 Python 中是 几乎任何东西)。

  2. 同上:任何经过滤器表达式演算值为元素的真都可以包含在映射中。
    (./) 任何经过滤器表达式演算值为真的元素都可以包含在映射中。

  3. 进一步阅读上,整段:部件 <!> 一律改为更常见的术语, (./) 成员。(不再列出全文,还请自己参看)

  4. 进一步阅读:Python Tutorial 讨论了 使用内置过滤器 <!> 函数……
    (!) 过度翻译,Python里可没有叫做“过滤器”的函数,只有filter函数
    (./) filter

4.6 and 和 or 的特殊性质

  1. 为了和前面章节的用词一致,布尔上下文 <!> 一律改为前文中使用的,也是更好的术语, (./) 布尔环境。顺便说一句,我发现几乎所有被翻译为“上下文”的术语都是指“环境”,不知道 programming 资料的第一批译者是怎么想的

  2. 例4.18上:不只 <!> 一次 (./) 不止

  3. 例4.18下:and-or技巧, {i} 也就是bool and a or b表达式……

4.7 使用 lambda 函数

  1. 例4.20, (2):你可以使用 lambda 函数甚至不需要将它赋值给一个变量。
    (./) 使用 lambda 函数时甚至不需要将它赋值给一个变量。

  2. 例4.21, (2):split without any arguments splits on whitespace.
    不带参数的 split 按照空格 <!> 进行分割。 (!) 翻译错误 (./) 空白

4.8 全部放在一起

  1. Para 2:This is the meat of apihelper.py:
    下面是 apihelper.py 的根本 <!> : (./) 关键

  2. Para 4:
    Now, let's take it from the end and work backwards. The
    for method in methodList
    现在,让我们从后向前分析。这个
    for method in methodList
    ……
    (!) 从下文看来,这里的“这个”画蛇添足,宁肯去掉。况且“the”翻译为“这个”也不甚妥当。

  3. 例4.23, (1):Confusingly, if you evaluate the __doc__ attribute directly, the Python IDE prints nothing at all, which makes sense if you think about it, but is still unhelpful.
    令人迷惑的是,如果你直接演算 __doc__ 属性的值,Python IDE 什么都不会打印,如果你只是考虑它,是有意义的,但是却没有什么用。
    (!) 翻译有些生硬。if you think about it不译也不会对句子的意思产生多大影响,宁肯不译。
    (./) 这是有意义的,但是却没有什么用。

  4. 例4.25, (1):This is also a useful debugging trick when you're working with lists. And in Python, you're always working with lists.
    在你处理列表时,这确实是一个有用的调试技巧。还有一点在 Python 中,你总是在操纵列表。
    (!) 此处翻译不太灵活,让人费解。
    (./) 在 Python 中,你会十分频繁地操作列表。

4.9 小结

4.-1 反馈

DiveIntoPythonZh/2007-07-01 (last edited 2009-12-25 07:16:55 by localhost)