diff --git "a/src/72.\347\224\237\346\210\220\345\231\250\346\230\257\346\200\216\344\271\210\345\256\236\347\216\260\347\232\204\357\274\237.md" "b/src/72.\347\224\237\346\210\220\345\231\250\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204\357\274\214\344\270\272\344\273\200\344\271\210\344\274\232\346\234\211\347\224\237\346\210\220\345\231\250\357\274\237.md"
similarity index 98%
rename from "src/72.\347\224\237\346\210\220\345\231\250\346\230\257\346\200\216\344\271\210\345\256\236\347\216\260\347\232\204\357\274\237.md"
rename to "src/72.\347\224\237\346\210\220\345\231\250\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204\357\274\214\344\270\272\344\273\200\344\271\210\344\274\232\346\234\211\347\224\237\346\210\220\345\231\250\357\274\237.md"
index 605b42f..e86b31b 100644
--- "a/src/72.\347\224\237\346\210\220\345\231\250\346\230\257\346\200\216\344\271\210\345\256\236\347\216\260\347\232\204\357\274\237.md"
+++ "b/src/72.\347\224\237\346\210\220\345\231\250\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204\357\274\214\344\270\272\344\273\200\344\271\210\344\274\232\346\234\211\347\224\237\346\210\220\345\231\250\357\274\237.md"
@@ -117,7 +117,7 @@ except StopIteration as e:
生成器永远在 yield 处暂停,并将 yield 后面的值返回。如果想驱动生成器继续执行,可以调用 \_\_next\_\_ 或 send,会去寻找下一个 yield,然后在下一个 yield 处暂停。依次往复,直到找不到 yield 时,抛出 StopIteration,并将返回值包在里面。
-但是这两者的不同之处在于,send 可以接收参数,假设生成器在 res = yield 123 这里停下来了。当调用 \_\_next\_\_ 和 send 的时候,都可以驱动执行,但调用 send 时可以传递一个 value,并将 value 赋值给变量 res。而 \_\_next\_ 没有这个功能,如果是调用 \_\_next\_ 的话,那么 res 得到的就是一个 None。
+但是这两者的不同之处在于,send 可以接收参数,假设生成器在 res = yield 123 这里停下来了。当调用 \_\_next\_\_ 和 send 的时候,都可以驱动执行,但调用 send 时可以传递一个 value,并将 value 赋值给变量 res。而 \_\_next\_\_ 没有这个功能,如果是调用 \_\_next\_\_ 的话,那么 res 得到的就是一个 None。
所以 res = yield 123 这一行语句需要两次驱动生成器才能完成,第一次驱动会让生成器执行到 yield 123,然后暂停执行,将 123 返回。第二次驱动才会给变量 res 赋值,此时会寻找下一个 yield 然后暂停。
@@ -691,7 +691,7 @@ print(
g = (巭孬嫑夯烎 for x in [1, 2, 3])
~~~
-执行这段代码不会报错,尽管 for 前面那一坨我们没有定义,但不要紧,因为生成器是惰性执行的。可如果我们又调用了 g.\_\_next\_\_(),那么很明显就会报错了,会抛出 NameError。
+执行这段代码不会报错,尽管 for 前面那一坨没有定义,但不要紧,因为生成器是惰性执行的。可如果我们又调用了 g.\_\_next\_\_(),那么很明显就会报错了,会抛出 NameError。
```
g = (x for x in lst)
@@ -728,7 +728,7 @@ for i in [1, 10]:
print(tuple(g))
```
-思考一下,上面代码会打印啥?下面进行分析:
+思考一下,上面这段代码会打印啥?来分析一下。
- 初始的 g,可以看成是 (1, 2, 3, 4),因为 in 后面是啥,在创建生成器的时候就确定了;
- 第一次循环之后,g 就相当于 (1+i, 2+i, 3+i, 4+i);
diff --git a/src/SUMMARY.md b/src/SUMMARY.md
index a8f3dda..842210b 100644
--- a/src/SUMMARY.md
+++ b/src/SUMMARY.md
@@ -72,4 +72,4 @@
+ [69. 函数是如何解析关键字参数的?](69.函数是如何解析关键字参数的?.md)
+ [70. 扩展位置参数和扩展关键字参数是如何解析的?](70.扩展位置参数和扩展关键字参数是如何解析的?.md)
+ [71. 闭包是怎么实现的?](71.闭包是怎么实现的?.md)
-+ [72. 生成器是怎么实现的?](72.生成器是怎么实现的?.md)
++ [72. 生成器是做什么的,为什么会有生成器?](72.生成器是做什么的,为什么会有生成器?.md)