Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 10b9e7a

Browse files
committed
更新高级模块话题
1 parent 775d6b5 commit 10b9e7a

File tree

1 file changed

+20
-13
lines changed

1 file changed

+20
-13
lines changed

‎Learning Python/5、模块和包/4. 高级模块话题.ipynb

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"cell_type": "markdown",
55
"metadata": {},
66
"source": [
7-
"# 模块设计理念 \n",
7+
"# 1. 模块设计理念 \n",
88
"- **总是在 Python 的模块内编写代码。** \n",
99
"- **最小化模块耦合性:全局变量。**\n",
1010
"- **最大化模块粘合性:统一目标。** \n",
@@ -15,10 +15,10 @@
1515
"cell_type": "markdown",
1616
"metadata": {},
1717
"source": [
18-
"# 在模块中隐藏数据 \n",
18+
"# 2. 在模块中隐藏数据 \n",
1919
"Python 模块会导出其文件顶层所赋值的所有变量名,没有对某一个变量名进行声明,使其在模块内可见或不可见这种概念。 \n",
2020
"\n",
21-
"## 最小化 from * 的破坏:`_X` 和 `__all__` \n",
21+
"## 2.1 最小化 from * 的破坏:`_X` 和 `__all__` \n",
2222
"把下划线放在变量名前面(例如,_X),可以防止客户端使用 from * 语句导入模块名时,把其中的那些变量名复制出去。但还是可以使用其他导入形式看见并修改这些变量名,例如 import 语句。"
2323
]
2424
},
@@ -201,7 +201,7 @@
201201
"cell_type": "markdown",
202202
"metadata": {},
203203
"source": [
204-
"# 启用未来的语言特性:__future__ \n",
204+
"# 3. 启用未来的语言特性:__future__ \n",
205205
"代码语言方面的变动可能破坏现有代码,使用以下形式的特定的 import 语句开启扩展功能:\n",
206206
"```\n",
207207
"from __future__ import featurename\n",
@@ -213,7 +213,7 @@
213213
"cell_type": "markdown",
214214
"metadata": {},
215215
"source": [
216-
"# 混合用法模式:__name__ 和 __main__ \n",
216+
"# 4. 混合用法模式:`__name__``__main__` \n",
217217
"这个技巧可以把文件作为模块导入,并以独立式程序的形式运行。每个模块都有个名为 `__name__` 的内置属性,Python 会自动设置该属性:\n",
218218
"- 如果文件是以顶层程序文件执行,在启动时,`__name__` 就会设置为字符串 `\"__main__\"`。\n",
219219
"- 如果文件被导入,`__name__` 就会改设成客户端所了解的模块名。\n",
@@ -298,7 +298,7 @@
298298
"cell_type": "markdown",
299299
"metadata": {},
300300
"source": [
301-
"# 示例:双模代码 \n",
301+
"# 5. 示例:双模代码 \n",
302302
"如下的模块 formats.py,为导入者定了字符串格式化工具,还检查其名称看它是否作为一个顶层脚本在运行;如果是这样的话,它测试并使用系统命令行上列出的参数来运行一个定制的或传入的测试。在 Python 中,sys.argv 列表包含了命令行参数,它是反映在命令行上录入的单词的一个字符串列表,其中,第一项总是将要运行的脚本的名称: "
303303
]
304304
},
@@ -482,7 +482,7 @@
482482
"cell_type": "markdown",
483483
"metadata": {},
484484
"source": [
485-
"# 修改模块搜索路径 \n",
485+
"# 6. 修改模块搜索路径 \n",
486486
"模块搜索路径是一个目录列表,可以通过环境变量 PYTHONPATH 以及可能的 .pth 路径文件进行定制。Python 程序本身通过修改名为 sys.path 的内置列表来修改搜索路径。sys.path 在程序启动时就会进行初始化,在那之后,可以随意对其元素进行删除、附加和重设:"
487487
]
488488
},
@@ -583,7 +583,7 @@
583583
"cell_type": "markdown",
584584
"metadata": {},
585585
"source": [
586-
"# Import 语句和 from 语句的 as 扩展 \n",
586+
"# 7. Import 语句和 from 语句的 as 扩展 \n",
587587
"import 和 from 语句都可以扩展,让模块可以在脚本中给予不同的变量名:\n",
588588
"```\n",
589589
"import modulename as name\n",
@@ -608,7 +608,7 @@
608608
"cell_type": "markdown",
609609
"metadata": {},
610610
"source": [
611-
"# 用名称字符串导入模块 \n",
611+
"# 8. 用名称字符串导入模块 \n",
612612
"有时候,我们的程序可以在运行时以一个字符串的形式获取要导入的模块的名称。使用特殊的工具,从运行时生成的一个字符串来动态地载入一个模块。最通用的方法是,把一条导入语句构建为 Python 代码的一个字符串,并且将其传递给 exec 内置函数以运行:"
613613
]
614614
},
@@ -694,12 +694,12 @@
694694
"cell_type": "markdown",
695695
"metadata": {},
696696
"source": [
697-
"# 示例:过渡性模块重载 \n",
697+
"# 9. 示例:过渡性模块重载 \n",
698698
"当重载一个模块时,Python 只重载特定的模块文件,它不会自动重载那些导入的模块。 \n",
699699
"\n",
700700
"例如,要重载某个模块 A,并且 A 导入模块 B 和 C,重载只适用于 A,而不适用于 B 和 C。 \n",
701701
"\n",
702-
"## 递归重载 \n",
702+
"## 9.1 递归重载 \n",
703703
"通过扫描模块的 `__dict__` 属性并检查每一项的 type 以找到要重新载入的嵌套模块:"
704704
]
705705
},
@@ -802,14 +802,21 @@
802802
"cell_type": "markdown",
803803
"metadata": {},
804804
"source": [
805-
"# 模块陷阱 \n",
805+
"# 10. 模块陷阱 \n",
806806
"- **顶层代码的语句次序的重要性。**\n",
807807
"- **from 复制变量名,而不是连接。**\n",
808808
"- **from * 会让变量语义模糊。**\n",
809809
"- **reload 不会影响 from 导入。**\n",
810810
"- **reload、from 以及交互式模式测试。**\n",
811811
"- **递归形式的 from 导入无法工作。**"
812812
]
813+
},
814+
{
815+
"cell_type": "code",
816+
"execution_count": null,
817+
"metadata": {},
818+
"outputs": [],
819+
"source": []
813820
}
814821
],
815822
"metadata": {
@@ -828,7 +835,7 @@
828835
"name": "python",
829836
"nbconvert_exporter": "python",
830837
"pygments_lexer": "ipython3",
831-
"version": "3.6.6"
838+
"version": "3.6.8"
832839
}
833840
},
834841
"nbformat": 4,

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /