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 1The 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 3A 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 2This 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)