Skip to content

Commit ca76352

Browse files
committed
doc: 添加推导式,模块文档
1 parent 52185fc commit ca76352

7 files changed

Lines changed: 149 additions & 0 deletions

File tree

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@
4141
- [集合](./set.md)
4242
- [日期和时间](./date-time.md)
4343
- [函数](./function.md)
44+
- [推导式](./comprehensions.md) ⚠️
45+
- [模块](./modules.md)
4446

4547
## Reference
4648

comprehensions.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# 推导式
2+
3+
> 这个很重要,暂时还不完全理解
4+
5+
## 参考
6+
7+
- [菜鸟 - 数据结构](http://www.runoob.com/python3/python3-data-structure.html)
8+
- [python的各种推导式(列表推导式、字典推导式、集合推导式)](https://www.cnblogs.com/tkqasn/p/5977653.html)
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#!/usr/bin/env python3
2+
# -*- coding: UTF-8 -*-
3+
4+
if __name__ == '__main__':
5+
print ('作为主程序运行')
6+
else:
7+
print ('package 初始化')
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#!/usr/bin/env python3
2+
# -*- coding=utf-8 -*-
3+
4+
5+
def runoob1():
6+
print ("I'm in runoob1")
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#!/usr/bin/env python3
2+
# -*- coding=utf-8 -*-
3+
4+
5+
def runoob2():
6+
print ("I'm in runoob2")

example/day06/test.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#!/usr/bin/python
2+
# -*- coding: UTF-8 -*-
3+
4+
# 导入 Phone 包
5+
from package_example.runoob1 import runoob1
6+
from package_example.runoob2 import runoob2
7+
8+
runoob1()
9+
runoob2()

modules.md

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
# 模块
2+
3+
> 示例:example/day06
4+
5+
> Python 模块(Module),是一个 Python 文件,以 `.py` 结尾,包含了 `Python 对象定义``Python语句`
6+
7+
## import 语句
8+
9+
想使用 Python 源文件,只需在另一个源文件里执行 `import` 语句,语法如下
10+
11+
```py
12+
import module1[, module2[,... moduleN]
13+
```
14+
15+
引入指定的模块
16+
17+
> 一个模块只会被导入一次,不管你执行了多少次import
18+
> 使用import语句的时候,涉及到Python的搜索路径,搜索路径是由一系列目录名组成的,Python解释器就依次从这些目录中去寻找所引入的模块,
19+
> 搜索路径是在Python编译或安装的时候确定的,安装新的库应该也会修改。搜索路径被存储在 `sys` 模块中的 `path` 变量
20+
21+
```py
22+
>>> import sys
23+
>>> sys.path
24+
['', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python37.zip', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages']
25+
```
26+
27+
> sys.path 输出是一个列表,其中 *第一项是空串 `''`*,代表 *当前目录*
28+
29+
## from … import 语句
30+
31+
> from 语句让你从模块中 `导入` 一个 `指定的部分` 到当前命名空间中
32+
33+
```py
34+
from modname import name1[, name2[, ... nameN]]
35+
```
36+
37+
## from … import * 语句
38+
39+
> 把一个模块的 `所有内容` 全都导入到当前的命名空间
40+
41+
注意 ⚠️ :这将把所有的名字都导入进来,但是那些由单一下划线(_)开头的名字不在此例。大多数情况不应使用这种方法,因为引入的其它来源的命名,很可能覆盖了已有的定义
42+
43+
## __name__属性
44+
45+
一个模块被另一个程序第一次引入时,其主程序将运行。如果我们想在模块被引入时,模块中的某一程序块不执行,我们可以用 `__name__` 属性来使该程序块仅在该模块自身运行时执行
46+
47+
> 注意 ⚠️: 每个模块都有一个 `__name__` 属性,当其值是 `__main__` 时,表明该模块自身在运行,否则是被引入
48+
49+
## 标准模块
50+
51+
>
52+
53+
## 包
54+
55+
包是一种管理 Python 模块 `命名空间` 的形式,采用 `点模块名称`
56+
57+
> 比如一个模块的名称是 `A.B` , 那么他表示一个 `包 A` 中的 `子模块 B`
58+
59+
考虑一个在 `package_example` 目录下的 `runoob1.py``runoob2.py``__init__.py` 文件,test.py 为测试调用包的代码,目录结构如下:
60+
61+
注意 ⚠️ : 目录只有包含一个叫做 `__init__.py` 的文件才会被认作是一个包,主要是为了避免一些滥俗的名字(比如叫做 string)不小心的影响搜索路径中的有效模块
62+
63+
> 简单来说,包就是文件夹,但该文件夹下必须存在` __init__.py` 文件, 该文件的内容可以为空。`__init__.py` 用于标识当前文件夹是一个包。
64+
65+
> 示例:example/day06
66+
67+
```
68+
test.py
69+
package_example
70+
|-- __init__.py
71+
|-- runoob1.py
72+
|-- runoob2.py
73+
```
74+
75+
76+
### 导入一个包里面的特定模块
77+
78+
```py
79+
import sound.effects.echo
80+
```
81+
82+
这将会导入子模块: `sound.effects.echo` 他必须 `使用全名` 去访问:
83+
84+
```py
85+
sound.effects.echo.echofilter(input, output, delay=0.7, atten=4)
86+
```
87+
88+
还有一种导入子模块的方法是
89+
90+
```py
91+
from sound.effects import echo
92+
```
93+
94+
直接导入一个函数或者变量
95+
96+
```py
97+
from sound.effects.echo import echofilter
98+
```
99+
100+
注意 ⚠️ : 当使用 `from package import item` 这种形式的时候,对应的item既可以是 *包里面的子模块(子包),或者包里面定义的其他名称,比如函数,类或者变量*
101+
102+
> 导入语句遵循如下规则:如果包定义文件 `__init__.py` 存在一个叫做 `__all__` 的列表变量,那么在使用 `from package import *` 的时候就把这个列表中的所有名字作为包内容导入。
103+
104+
## __all__
105+
106+
>
107+
108+
## 参考
109+
110+
- [菜鸟 - 模块](http://www.runoob.com/python/python-modules.html)
111+
- [菜鸟 - Python3 模块](http://www.runoob.com/python3/python3-module.html)

0 commit comments

Comments
 (0)