Changeset 889

Show
Ignore:
Timestamp:
Tue Mar 14 20:52:48 2006
Author:
osmond
Message:

update

Files:

Legend:

Unmodified
Added
Removed
Modified
  • zh-translations/branches/diveintopython-zh-5.4/zh-cn/xml/odbchelper.xml

    r858 r889  
    199 199 </callout>  
    200 200 <callout arearefs="odbchelper.objects.2.3">  
    201   <para>实际上, 我说的不对。实际情况要比这更复杂, 因为不是所有的模块都保存为 <literal>.py</literal> 文件。有一些, 像 &sys;  模块, 是"内置模块", 它们实际上是置于 &python; 内部的。内置模块的行为如同一般的模块, 但是它们的 &python; 源代码是不可用的, 因为它们不是用 &python; 写的! ( &sys; 模块是用 &c; 写的。) </para>  
      201 <para>实际上, 我没说实话。真实情况要比这更复杂, 因为不是所有的模块都保存为 <literal>.py</literal> 文件。有一些, 像 &sys;  模块, 是"内置模块", 它们实际上是置于 &python; 内部的。内置模块的行为如同一般的模块, 但是它们的 &python; 源代码是不可用的, 因为它们不是用 &python; 写的! ( &sys; 模块是用 &c; 写的。) </para>  
    201 201 </callout>  
    202 202 <callout arearefs="odbchelper.objects.2.4">  
     
    209 209 <section>  
    210 210 <title>何谓对象?</title>  
    211   <para>在 &python; 中每个东西都是对象, 并且几乎每个东西都有属性和方法。 所有的函数都有一个内置的 &doc; 属性, 它会返回在函数源代码中定义的 &docstring; 。  &sys; 模块是一个对象, 它有一个叫作  <varname>path</varname> 的属性。等等。</para>  
      211 <para>在 &python; 中一切都是对象, 并且几乎一切都有属性和方法。 所有的函数都有一个内置的 &doc; 属性, 它会返回在函数源代码中定义的 &docstring; 。  &sys; 模块是一个对象, 它有一个叫作  <varname>path</varname> 的属性。等等。</para>  
    211 211 <para>我们仍然在回避问题的实质, 究竟何谓对象?  不同的编程语言以不同的方式定义 <quote>对象</quote> 。  
    212   某些语言, 它意味着 <emphasis> 所有 </emphasis> 对象 <emphasis> 必须</emphasis> 有属性和方法;另一些语言, 它意味着所有的对象都可以子类化。在 &python; 中, 定义是松散的;某些对象既没有属性也没有方法 (关于这一点的说明在 <xref linkend="datatypes" endterm="datatypes.numberonly"/>) , 而且不是所有的对象都可以子类化 (关于这一点的说明在<xref linkend="fileinfo" endterm="fileinfo.numberonly"/>) 。但是万物皆对象从感性上可以解释为:每个东西都可以赋予变量或当作参数传递给函数(关于这一点的说明在<xref linkend="apihelper" endterm="apihelper.numberonly"/>)。 </para>  
      212 某些语言中, 它意味着 <emphasis> 所有 </emphasis> 对象 <emphasis> 必须</emphasis> 有属性和方法;另一些语言中, 它意味着所有的对象都可以子类化。在 &python; 中, 定义是松散的;某些对象既没有属性也没有方法 (关于这一点的说明在 <xref linkend="datatypes" endterm="datatypes.numberonly"/>) , 而且不是所有的对象都可以子类化 (关于这一点的说明在<xref linkend="fileinfo" endterm="fileinfo.numberonly"/>) 。但是万物皆对象从感性上可以解释为:一切都可以赋值给变量或作为参数传递给函数(关于这一点的说明在<xref linkend="apihelper" endterm="apihelper.numberonly"/>)。 </para>  
    212 212 <para>这一点太重要了, 所以我会在刚开始就不止一次地反复强调它, 以免您没注意到:在 &python; 中 <emphasis>万物皆对象</emphasis> 。字符串是对象。列表是对象。函数是对象。甚至模块也是对象, 这一点我们很快会看到。</para>  
    213 213 <itemizedlist role="furtherreading">  
     
    382 382 </callout>  
    383 383 </calloutlist>  
    384   <para>请注意新的元素 (key 为 <literal>'uid'</literal>, value 为 <literal>'sa'</literal>) 出现在中间。实际上, 在第一个例子中的元素看上去是有序的不过是一种巧合。现在它们看上去无序则更是一种巧合。</para>  
      384 <para>请注意新的元素 (key 为 <literal>'uid'</literal>, value 为 <literal>'sa'</literal>) 出现在中间。实际上, 在第一个例子中的元素看上去是的有序不过是一种巧合。现在它们看上去的无序同样是一种巧合。</para>  
    384 384 <note id="tip.dictorder">  
    385 385 <title>Dictionary 是无序的</title>  
     
    587 587 </callout>  
    588 588 <callout arearefs="odbchelper.list.5.3">  
    589   <para>&extend; 用来接 list。请注意不要使用多个参数来调用 &extend;, 要使用一个 list 参数进行调用。在本例中, 这个 list 有两个元素。</para>  
      589 <para>&extend; 用来接 list。请注意不要使用多个参数来调用 &extend;, 要使用一个 list 参数进行调用。在本例中, 这个 list 有两个元素。</para>  
    589 589 </callout>  
    590 590 </calloutlist>  
    808 808 <listitem><para>如果对不需要修改的数据进行 <quote>写保护</quote>, 可以使代码更安全。使用 tuple 而不是 list 如同拥有一个隐含的 <literal>assert</literal> 语句, 说明这一数据是常量。如果必须要改变这些值, 则需要执行 tuple 到 list 的转换 (需要使用一个特殊的函数)。</para></listitem>  
    809 809 <listitem><para>还记得我说过 <link linkend="odbchelper.dictionarytypes">dictionary keys</link> 可以是字符串, 整数和 <quote>其它几种类型</quote>吗?  Tuples 就是这些类型之一。  Tuples 可以在 dictionary 中被用做 key, 但是 list 不行。</para>  
    810   <para>实际上, 事情要比这更复杂。Dictionary key 必须是不可变的。Tuple 本身是不可改变的, 但是如果您有一个 list 的 tuple, 那就认为是可变的了, 用做 dictionary key 就是不安全的。只有字符串, 整数或其它 dictionary 安全的 tuple 才可以用作 dictionary key。</para></listitem>  
      810 <para>实际上, 事情要比这更复杂。Dictionary key 必须是不可变的。Tuple 本身是不可改变的, 但是如果您有一个 list 的 tuple, 那就认为是可变的了, 用做 dictionary key 就是不安全的。只有字符串, 整数或其它 dictionary 安全的 tuple 才可以用作 dictionary key。</para></listitem>  
    810 810 <listitem><para>Tuples 可以用在字符串格式化中, 我们会很快看到。</para></listitem>  
    811 811 </itemizedlist>