Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions 10.functions.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,9 +101,9 @@
在第一次使用 `say` 时,我们只提供字符串因而函数只会将这个字符串打印一次。在第二次使用 `say` 时,我们既提供了字符串,同时也提供了一个参数 `5`,声明我们希望*说(Say)*这个字符串五次。

> *注意*
>
>
> 只有那些位于参数列表末尾的参数才能被赋予默认参数值,意即在函数的参数列表中拥有默认参数值的参数不能位于没有默认参数值的参数之前。
>
>
> 这是因为值是按参数所处的位置依次分配的。举例来说,`def func(a, b, 5)` 是有效的,但 `def func(a=5, b)` 是*无效的*。

## 关键字参数[^3]
Expand Down Expand Up @@ -196,7 +196,7 @@ Python 有一个甚是优美的功能称作*文档字符串(Documentation Stri

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

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

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

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

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

[^5]: 此处指的是以英文撰写的文档字符串内容。
[^5]: 此处指的是以英文撰写的文档字符串内容。
10 changes: 5 additions & 5 deletions 11.modules.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@

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

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

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

Expand Down Expand Up @@ -118,7 +118,7 @@ from mymodule import *
<!-- -->

> **Python 之禅**
>
>
> Python 的一大指导原则是“明了胜过晦涩”[^2]。你可以通过在 Python 中运行 `import this` 来了解更多内容。

## `dir` 函数 {#dir-function}
Expand Down Expand Up @@ -167,7 +167,7 @@ $ python

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

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

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

Expand All @@ -181,7 +181,7 @@ $ python

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

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

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

Expand Down Expand Up @@ -215,4 +215,4 @@ $ python

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

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