Skip to content

Commit 07156b3

Browse files
committed
Fix translation typos and errors.
1 parent 6c1ef65 commit 07156b3

11 files changed

+25
-23
lines changed

03.2.translator-preface.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,6 @@
3434

3535
2017 年 1 月 3 日至 1 月 8 日,陆续进行了错字漏字的订正。依 anglum 与 slimray 的建议对《面向对象编程》一章的部分翻译作了修改,并修正了错误。经 行走的鱼2001 指正改正了《函数》一章的错误。经 lefinite 指正改正了《数据结构》一章的错误。经 Zhanyu Wang 指正改正了《模块》一章的错误。经 nonozone 与 张小西 指正改正了《基础》一章的错误。在 ivysrono 协助下改正了《函数》《模块》两章的错误。——以上修订体现在 4.01c 版中。
3636

37-
2017年 1 月 9 日至 2 月 16 日,陆续进行了错字漏字订正与部分译文重写。依 Haruki Kirigaya、Yuki Kiriyama、Nakagawa Kanon 指正改写了《面向对象编程》一章的部分译文。经 Cloud 指正改正了《运算符与表达式》一章的错误。经 yurikaka 指正改正了《前言》《基础》《运算符与表达式》几章的错误。经 aristotll 指正改正了《标准库》一章的错误。经 Tian Zhao 指正改正了《解决问题》一章的错误。——以上修订体现在 4.02c 版中。
37+
2017年 1 月 9 日至 2 月 16 日,陆续进行了错字漏字订正与部分译文重写。依 Haruki Kirigaya、Yuki Kiriyama、Nakagawa Kanon 指正改写了《面向对象编程》一章的部分译文。经 Cloud 指正改正了《运算符与表达式》一章的错误。经 yurikaka 指正改正了《前言》《基础》《运算符与表达式》几章的错误。经 aristotll 指正改正了《标准库》一章的错误。经 Tian Zhao 指正改正了《解决问题》一章的错误。——以上修订体现在 4.02c 版中。
38+
39+
2017 年 3 月 19 日,进行了错字漏字订正。依 Tian Zhao 指正,改正了《解决问题》一章的错误。依 yangyangwithgnu 指正修改了《基础》《函数》《模块》《解决问题》《面向对象编程》《数据结构》《标准库》《迈出下一步》《FLOSS》章节的错误。追忆、Yang 同样指出了前述的部分错误。——以上修订体现在 4.03c 版中。

07.basics.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ print('hello world')
6363

6464
### 双引号
6565

66-
被双引号包括的字符串和被单引号扩起的字符串其工作机制完全相同。例如 `"你的名字是?"``"What's your name?"`
66+
被双引号包括的字符串和被单引号括起的字符串其工作机制完全相同。例如 `"你的名字是?"``"What's your name?"`
6767

6868
### 三引号 {#triple-quotes}
6969

10.functions.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -101,16 +101,16 @@
101101
在第一次使用 `say` 时,我们只提供字符串因而函数只会将这个字符串打印一次。在第二次使用 `say` 时,我们既提供了字符串,同时也提供了一个参数 `5`,声明我们希望*说(Say)*这个字符串五次。
102102

103103
> *注意*
104-
>
104+
>
105105
> 只有那些位于参数列表末尾的参数才能被赋予默认参数值,意即在函数的参数列表中拥有默认参数值的参数不能位于没有默认参数值的参数之前。
106-
>
107-
> 这是因为值是按参数所处的位置依次分配的。举例来说,`def func(a, b, 5)` 是有效的,但 `def func(a=5, b)`*无效的*
106+
>
107+
> 这是因为值是按参数所处的位置依次分配的。举例来说,`def func(a, b=5)` 是有效的,但 `def func(a=5, b)`*无效的*
108108
109109
## 关键字参数[^3]
110110

111111
如果你有一些具有许多参数的函数,而你又希望只对其中的一些进行指定,那么你可以通过命名它们来给这些参数赋值——这就是*关键字参数(Keyword Arguments)*——我们使用命名(关键字)而非位置(一直以来我们所使用的方式)来指定函数中的参数。
112112

113-
这样做有两大有点——其一,我们不再需要考虑参数的顺序,函数的使用将更加容易。其二,我们可以只对那些我们希望赋予的参数以赋值,只要其它的参数都具有默认参数值。
113+
这样做有两大优点——其一,我们不再需要考虑参数的顺序,函数的使用将更加容易。其二,我们可以只对那些我们希望赋予的参数以赋值,只要其它的参数都具有默认参数值。
114114

115115
案例(保存为 `function_keyword.py):
116116

@@ -196,7 +196,7 @@ Python 有一个甚是优美的功能称作*文档字符串(Documentation Stri
196196

197197
该文档字符串所约定的是一串多行字符串,其中第一行以某一大写字母开始,以句号结束。第二行为空行,后跟的第三行开始是任何详细的解释说明。[^5]在此*强烈建议*你在有关你所有非凡功能的文档字符串中都遵循这一约定。
198198

199-
我们可以通过使用函数的 `__doc__`(注意其中的*双下划线*)属性(属于函数的名称)来获取函数 `print_max` 的文档字符串属性。只消记住 Python 将*所有东西*都视为一个对象,这其中自然包括函数。我们将在后面的[类(Class)](./14.oop.md#oop)章节讨论有关对象的更多细节。
199+
我们可以通过使用函数的 `__doc__`(注意其中的*双下划綫*)属性(属于函数的名称)来获取函数 `print_max` 的文档字符串属性。只消记住 Python 将*所有东西*都视为一个对象,这其中自然包括函数。我们将在后面的[类(Class)](./14.oop.md#oop)章节讨论有关对象的更多细节。
200200

201201
如果你曾使用过 Python 的 `help()` 函数,那么你应该已经了解了文档字符串的用途了。它所做的便是获取函数的 `__doc__` 属性并以一种整洁的方式将其呈现给你。你可以在上方的函数中尝试一下——只需在程序中包含 `help(print_max)` 就行了。要记住你可以通过按下 `q` 键来退出 `help`
202202

@@ -220,4 +220,4 @@ Python 有一个甚是优美的功能称作*文档字符串(Documentation Stri
220220

221221
[^4]: 原文作 VarArgs Parameters,VarArgs 来自于英文“可变的”“自变量(一译变元,台译引数,也可以理解成参数)”两个英文单词的结合,即 **Var**iable **Arg**uments。
222222

223-
[^5]: 此处指的是以英文撰写的文档字符串内容。
223+
[^5]: 此处指的是以英文撰写的文档字符串内容。

11.modules.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
当 Python 运行 `import sys` 这一语句时,它会开始寻找 `sys` 模块。在这一案例中,由于其是一个内置模块,因此 Python 知道应该在哪里找到它。
2424

25-
如果它不是一个已编译好的模块,即用 Python 编写的模块,那么 Python 解释器将从它的 `sys.path` 变量所提供的目录中进行搜索。如果找到了对应模块,则该模块中的语句将开始运行,并*能够*为你所使用。在这里需要注意的是,初始化工作只需在我们*第一次*导入模块时完成。
25+
如果它不是一个已编译好的模块,即用 Python 编写的模块,那么 Python 解释器将从它的 `sys.path` 变量所提供的目录中进行搜索。如果找到了对应模块,则该模块中的语句将在开始运行,并*能够*为你所使用。在这里需要注意的是,初始化工作只需在我们*第一次*导入模块时完成。
2626

2727
`sys` 模块中的 `argv` 变量通过使用点号予以指明,也就是 `sys.argv` 这样的形式。它清晰地表明了这一名称是 `sys` 模块的一部分。这一处理方式的另一个优点是这个名称不会与你程序中的其它任何一个 `argv` 变量冲突。
2828

@@ -34,7 +34,7 @@
3434

3535
在这里要记住的是,运行的脚本名称在 `sys.argv` 的列表中总会位列第一。因此,在这一案例中我们将会有如下对应关系:`'module_using_sys.py'` 对应 `sys.argv[0]``'we'` 对应 `sys.argv[1]``'are'` 对应 `sys.argv[2]``'arguments'` 对应 `sys.argv[3]`。要注意到 Python 从 0 开始计数,而不是 1。
3636

37-
`sys.path` 内包括了包含导入模块的字典名称列表。你能观察到 `sys.path` 的第一段字符串是空的——这一空字符串代表当前目录也是 `sys.path` 的一部分,它与 `PYTHONPATH` 环境变量等同。这意味着你可以直接导入位于当前目录的模块。否则,你必须将你的模块放置在 `sys.path` 内所列出的目录中。
37+
`sys.path` 内包含了导入模块的字典名称列表。你能观察到 `sys.path` 的第一段字符串是空的——这一空字符串代表当前目录也是 `sys.path` 的一部分,它与 `PYTHONPATH` 环境变量等同。这意味着你可以直接导入位于当前目录的模块。否则,你必须将你的模块放置在 `sys.path` 内所列出的目录中。
3838

3939
另外要注意的是当前目录指的是程序启动的目录。你可以通过运行 `import os; print(os.getcwd())` 来查看你的程序目前所处在的目录。
4040

@@ -118,7 +118,7 @@ from mymodule import *
118118
<!-- -->
119119

120120
> **Python 之禅**
121-
>
121+
>
122122
> Python 的一大指导原则是“明了胜过晦涩”[^2]。你可以通过在 Python 中运行 `import this` 来了解更多内容。
123123
124124
## `dir` 函数 {#dir-function}
@@ -167,7 +167,7 @@ $ python
167167

168168
随后,我们以不传递参数的形式使用 `dir` 函数。在默认情况下,它将返回当前模块的属性列表。要注意到被导入进来的模块所能生成的列表也会是这一列表的一部分。
169169

170-
给了观察 `dir` 函数的操作,我们定义了一个新的变量 `a` 并为其赋予了一个值,然后再检查 `dir` 返回的结果,我们就能发现,同名列表中出现了一个新的值。我们通过 `del` 语句移除了一个变量或是属性,这一变化再次反映在 `dir` 函数所处的内容中。
170+
给了观察 `dir` 函数的操作,我们定义了一个新的变量 `a` 并为其赋予了一个值,然后在检查 `dir` 返回的结果,我们就能发现,同名列表中出现了一个新的值。我们通过 `del` 语句移除了一个变量或是属性,这一变化再次反映在 `dir` 函数所处的内容中。
171171

172172
关于 `del` 的一个小小提示——这一语句用于*删除*一个变量或名称,当这一语句运行后,在本例中即 `del a`,你便不再能访问变量 `a`——它将如同从未存在过一般。
173173

@@ -181,7 +181,7 @@ $ python
181181

182182
包是指一个包含模块与一个特殊的 `__init__.py` 文件的文件夹,后者向 Python 表明这一文件夹是特别的,因为其包含了 Python 模块。
183183

184-
假设你想创建一个名为“world”的包,其中还包含着 ”asia“、”africa“等其它子包,同时这些子包都包含了诸如”india“、”madagascar“等模块。
184+
建设你想创建一个名为“world”的包,其中还包含着 ”asia“、”africa“等其它子包,同时这些子包都包含了诸如”india“、”madagascar“等模块。
185185

186186
下面是你会构建出的文件夹的结构:
187187

@@ -215,4 +215,4 @@ $ python
215215

216216
[^1]: 原文作 Byte-compiled .pyc Files,沈洁元译本译作“字节编译的 .pyc 文件”。
217217

218-
[^2]: 原文作 Explicit is better than Implicit,如果使用前面章节出现过的术语概念,也可理解为“显式胜过隐式”。
218+
[^2]: 原文作 Explicit is better than Implicit,如果使用前面章节出现过的术语概念,也可理解为“显式胜过隐式”。

13.problem_solving.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@
118118

119119
现在程序可以正常工作了!让我们来回顾一下我们在第三版中所作出的实际的增强工作。我们使用 `input` 函数来接受用户的注释内容,并通过 `len` 函数来检查输入内容的长度,以检查用户是否确实输入了什么内容。如果用户未输入任何内容而直接敲下了 `enter` 键(也许这份备份只是一份例行备份而没作出什么特殊的修改),那么我们将继续我们以前所做的工作。
120120

121-
不过,如果用户输入了某些注释内容,那么它将会被附加进 zip 文件的文件之中,处在 `.zip` 扩展名之前。在这里需要注意的是我们用下划线替换注释中的空格——这是因为管理没有空格的文件名总会容易得多。
121+
不过,如果用户输入了某些注释内容,那么它将会被附加进 zip 文件的文件名之中,处在 `.zip` 扩展名之前。在这里需要注意的是我们用下划线替换注释中的空格——这是因为管理没有空格的文件名总会容易得多。
122122

123123
## 继续改进
124124

14.oop.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ Python 中的有不少类它们的名称具有着特殊的意义。现在我们
8484

8585
当我们在 `Person` 类下创建新的实例 `p` 时,我们采用的方法是先写下类的名称,后跟括在括号中的参数,形如:`p = Person('Swaroop')`
8686

87-
我们不会显示地调用 `__init__` 方法。
87+
我们不会显式地调用 `__init__` 方法。
8888
这正是这个方法的特殊之处所在。
8989

9090
现在,我们可以使用我们方法中的 `self.name` 字段了,使用的方法在 `say_hi` 方法中已经作过说明。
@@ -165,7 +165,7 @@ how_many = classmethod(how_many)
165165

166166
**它是如何工作的**
167167

168-
要想使用继承,在定义类[^6]时我们需要在类后面跟一个包含基类名称的元组。然后,我们会注意到基类的 `__init__` 方法是通过 `self` 变量被显示调用的,因此我们可以初始化对象的基类部分。下面这一点很重要,需要牢记——因为我们在 `Teacher``Student` 子类中定义了 `__init__` 方法,Python 不会自动调用基类 `SchoolMember` 的构造函数,你必须自己显式地调用它。
168+
要想使用继承,在定义类[^6]时我们需要在类后面跟一个包含基类名称的元组。然后,我们会注意到基类的 `__init__` 方法是通过 `self` 变量被显式调用的,因此我们可以初始化对象的基类部分。下面这一点很重要,需要牢记——因为我们在 `Teacher``Student` 子类中定义了 `__init__` 方法,Python 不会自动调用基类 `SchoolMember` 的构造函数,你必须自己显式地调用它。
169169

170170
相反,如果我们_没有_在一个子类中定义一个 `__init__` 方法,Python 将会自动调用基类的构造函数。
171171

15.io.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ Python 提供了一个叫作 `Pickle` 的标准模块,通过它你可以将_
7676

7777
截止到现在,当我们编写或使用字符串、读取或写入某一文件时,我们用到的只是简单的英语字符。
7878

79-
> 注意:如果你正在使用 Python 2,我们由希望能够读写其它非英语语言,我们需要使用 `unicode` 类型,它全都以字母 `u` 开头,例如 `u"hello world"`
79+
> 注意:如果你正在使用 Python 2,我们又希望能够读写其它非英语语言,我们需要使用 `unicode` 类型,它全都以字母 `u` 开头,例如 `u"hello world"`
8080
8181
```python
8282
>>> "hello world"

17.stdlib.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ True
4747

4848
首先,我们通过检查 `platform.platform()` 返回的字符串来确认我们正在使用的操作系统(有关更多信息,请参阅`import platform; help(platform)`)。如果它是 Windows,我们将找出其主驱动器(Home Drive),主文件夹(Home Folder)以及我们希望存储信息的文件名。将这三个部分汇聚到一起,我们得到了有关文件的全部位置信息。对于其它平台而言,我们需要知道的只是用户的主文件夹位置,这样我们就可获得文件的全部位置信息。
4949

50-
我们使用 `op.path.join()` 函数来将这三部分位置信息聚合到一起。使用这一特殊函数,而非仅仅将这几段字符串拼凑在一起的原因是这个函数会确保完整的位置路径符合当前操作系统的预期格式。
50+
我们使用 `os.path.join()` 函数来将这三部分位置信息聚合到一起。使用这一特殊函数,而非仅仅将这几段字符串拼凑在一起的原因是这个函数会确保完整的位置路径符合当前操作系统的预期格式。
5151

5252
然后我们配置 `logging` 模块,让它以特定的格式将所有信息写入我们指定的文件。
5353

19.what_next.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@
9292
- http://kivy.org
9393

9494
- PyGTK
95-
- 这是 GTK+ 工具包的 Python 绑定,它是构建 GNOME 的基础。GTK+ 有许多奇怪的用法,但是你一旦习惯了使用它,就能很快的创建出你的 GUI 应用。Glade 图形界面设计工具是不可或缺的。它的文档至今仍在不断改进。GTK+ 在 GNU/Linux 下能够良好工作,但是它面向 Windows 的端口尚不完整。你可以使用 GTK+ 创建免费或专有的软件。要想开始使用,请阅读 [PyGTK 教程](http://www.pygtk.org/tutorial.html)
95+
- 这是 GTK+ 工具包的 Python 绑定,它是构建 GNOME 的基础。GTK+ 有许多奇怪的用法,但是你一旦习惯了使用它,就能很快的创建出你的 GUI 应用。Glade 图形界面设计工具是不可或缺的。它的文档至今仍在不断改进。GTK+ 在 GNU/Linux 下能够良好工作,但是它针对 Windows 平台的移植工作尚未完成。你可以使用 GTK+ 创建免费或专有的软件。要想开始使用,请阅读 [PyGTK 教程](http://www.pygtk.org/tutorial.html)
9696

9797
- PyQt
9898
- 这是 Qt 工具包的 Python 绑定,它是构建 KDE 的基础。 受益于 Qt Designer 与令人惊讶的 Qt 文档,Qt 十分容易使用也十分强大。如果你希望创建一款开源(GPL)软件,你可以免费使用 PyQt,不过如果你想创建专有的比原软件,你需要购买它。从 Qt 4.5 开始你可以使用它来创建不采用 GPL 授权的软件。要想开始使用,请阅读 [PySide](http://qt-project.org/wiki/PySide)

20.floss.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
下面是一些 FLOSS 的案例,可以帮助你了解社区共享共建可以创造出什么样的东西:
1010

11-
[Linux](http://www.kernel.org):这是一款 FLOSS 操作系统核心,运用于 GNU/Linux 操作系统。Linux 这一核心是由 Linus Torvalds 在他还是一名学生是发起的。Android 系统便是基于 Linux。现在你所使用的任何一家网站其中的大部分都运行于 Linux 之上。
11+
[Linux](http://www.kernel.org):这是一款 FLOSS 操作系统内核,运用于 GNU/Linux 操作系统之中。Linux 这一内核是由 Linus Torvalds 在他还是一名学生时发起的。Android 系统便是基于 Linux。现在你所使用的任何一家网站其中的大部分都运行于 Linux 之上。
1212

1313
[Ubuntu](http://www.ubuntu.com):这是一款由 Canonical 赞助、社区驱动的 Linux 发行版,是目前世界上最流行的 GNU/Linux 发行版。它允许你通过一款易于使用且易于安装的管理器安装大量 FLOSS 成员软件。最重要的是,你可以重启计算机然后通过 CD 来运行 GNU/Linux 系统!这一点能够允许你的电脑上安装新的操作系统前对它进行充分的试用。但是,Ubuntu 不是完全的免费软件,它包括了一些专有的驱动程序,固件和应用程序。
1414

@@ -18,7 +18,7 @@
1818

1919
[Mono](http://www.mono-project.com):这是一款微软 .NET 平台的开源实现。它能够允许在 GNU/Linux,Windows,FreeBSD,MacOS 等其它诸多平台上创建并使用 .NET 应用程序。
2020

21-
[Apache 网络服务器](http://httpd.apache.org)这是一款十分流行的开源网络服务器。实际上,它是这个星球上_最_流行的网络服务器!在它之上运行着世界上超过一半的网站。是的,正是如此——Apache 的使用量比它的所有对手(包括 Microsoft IIS)加起来还要多。
21+
[Apache Web 服务器](http://httpd.apache.org)这是一款十分流行的开源 Web 服务器。实际上,它是这个星球上_最_流行的 Web 服务器!在它之上运行着世界上超过一半的网站。是的,正是如此——Apache 的使用量比它的所有对手(包括 Microsoft IIS)加起来还要多。
2222

2323
[VLC 播放器](http://www.videolan.org/vlc/):这款视频播放器可以播放从 DivX 到 MP3 到 Ogg 到 VCD 到 DVD 等几乎任何内容。谁说开源没有乐趣的?;-)
2424

0 commit comments

Comments
 (0)