在 Python 中,使用了 yield 的函数被称为生成器(generator)。
生成器是一个可以快速创建迭代器的工具。
跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。
在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。 调用一个生成器函数,返回的是一个迭代器对象。
【生成器解析式和列表解析式】
# 生成器解析式 my_generator = (x * x for x in range(5)) print("生成器解析式,第一次读值") for i in my_generator: print(i, end=" ") print(end=" ") print("生成器解析式,第二次读值") for i in my_generator: print(i, end=" ") print() # 列表解析式 my_list = [x * x for x in range(5)] print("列表解析式,第一次读值") for i in my_list: print(i, end=" ") print(end=" ") print("列表解析式,第二次读值") for i in my_list: print(i, end=" ") # 当第一遍循环的时候,将 my_generator 里面的值依次读出并打印。 # 当再读一次的时候,就发现没有任何结果。这种特性也正是迭代器所具有的。
生成器解析式,第一次读值
0 1 4 9 16
生成器解析式,第二次读值
列表解析式,第一次读值
0 1 4 9 16
列表解析式,第二次读值
0 1 4 9 16