1、生成器
生长器是一个可迭代对象,提供了一种一边循环,一边计算的机制,主要用于生成一个序列,在需要生成的序列元素较多时,使用生成器可以节省内存空间。
2、分类
Python提供的生成器可以分为两类:
1.生成器函数
2.生成器表达式
3、生成器表达式
生成器表达式的详细内容可以看我的上一篇博客
Python推导式中的生成器推导式
4、生成器函数
使用了yield的函数被称为生成器,生成器与函数不同的是生成器返回的是一个迭代器对象,只能用于迭代操作。
只有next()或send()方法能够使生成器运行,像函数一样调用生成器并不会直接运行,只会返回一个生成器对象。
在调用生成器运行的过程中,每次遇到yield,函数会暂停并保存当前所有运行信息,返回yield后面的值,并在下次执行next()或send()方法时从当前位置继续运行。
def my_generator(n):
a = yield n
print(a)
n -= 1
b = yield n
print(b)
n -= 1
return n
mg = my_generator(10)
return1 = next(mg)
print(return1)
return2 = mg.send("hello")
print(return2)
return3 = next(mg)
print(return3)
debug单步执行输出结果
10
hello
9
None
Traceback (most recent call