python3-知识扩展扫盲易忘-generator的用法
时间: 2023-10-09 15:17:43 浏览: 43
Python中的生成器(generator)是一种特殊的迭代器,可以用来逐步生成序列。与普通函数不同,生成器函数使用yield关键字来返回值,而不是return。当函数执行到yield时,函数会暂停并将yield后面的值返回给调用者,但是函数的状态仍然保留在内存中,可以再次恢复执行。
以下是一些生成器的用法:
1. 生成器表达式
Python中的生成器表达式与列表推导式类似,但是使用圆括号而不是方括号。它可以用来生成一个序列,而不是一次性生成整个序列。
示例:
```
gen = (x * x for x in range(10))
for i in gen:
print(i)
```
2. yield语句
yield语句可以用来定义生成器函数。当函数执行到yield语句时,函数会暂停并将yield后面的值返回给调用者。函数的状态仍然保留在内存中,可以再次恢复执行。
示例:
```
def generator_func():
for i in range(10):
yield i * i
gen = generator_func()
for i in gen:
print(i)
```
3. send方法
send方法可以在生成器函数中向生成器发送一个值,并继续执行生成器函数。这个值可以通过yield语句返回。
示例:
```
def generator_func():
while True:
x = yield
print(x)
gen = generator_func()
next(gen)
gen.send(10)
```
4. yield from语句
yield from语句可以用来在生成器函数中调用另一个生成器函数。它可以让代码更加简洁,并且能够处理嵌套生成器的情况。
示例:
```
def child_gen():
for i in range(5):
yield i
def parent_gen():
yield from child_gen()
gen = parent_gen()
for i in gen:
print(i)
```
以上是一些生成器的用法,希望对你有所帮助。