python yield用法、生成器
·
yield是什么?作用是什么?
yield是一个关键字,是用来创建生成器的核心工具。
yield = 让函数可以分段执行,每次返回一个值,函数不结束,暂停住,等下次再继续跑。
一个函数只要有yield,就是生成器函数。
生成器函数的特点有哪些?
当函数执行到 yield 语句时,它会暂停执行,并返回 yield 后面的值。
此时,函数的所有局部变量和执行位置都会被保存下来。
当下一次请求值时(例如,通过 next() 函数或 for 循环),函数会从上次暂停的地方精确地恢复执行,就像从未中断过一样。
yield示例
用法:
先执行代码,然后依次去掉最后两次的print(next(g))注释,再执行。
代码:
# 带 yield 的函数 = 生成器函数
def my_generator():
print("第一段")
yield 1 # 返回 1,暂停
print("第二段")
yield 2 # 返回 2,暂停
print("第三段")
yield 3 # 返回 3,暂停
g = my_generator() # 不执行!只创建生成器
print(next(g))
# print(next(g))
# print(next(g))
函数遇到yield就会暂停,执行next()方法就可以触发,for循环的本质就是循环调用next()。
不用for循环实现循环调用next()的示例
代码:
# 这是一个生成器函数
def gen():
yield 1
yield 2
yield 3
# 1. 获取生成器对象
g = gen()
# 2. 手写 while 循环 + try 捕获结束
while True:
try:
# 手动调用 next()
value = next(g)
print(value) # 处理数据
# 3. 没有更多数据了,退出循环
except StopIteration:
print("结束")
break
生成器函数和生成器是一回事吗?
不是。
这个是生成器函数:
def my_generator():
这个g是生成器:
g = my_generator()
更多推荐



所有评论(0)