python的关键字yield有什么作用

2025-05-14 03:34:57
推荐回答(2个)
回答1:

yield是python中定义为生成器函数,其本质是封装了  __iter__和__next__方法   的迭代器;



与return返回的区别:return只能返回一次值,函数就终止了,而yield能多次返回值,每次返回都会将函数暂停,下一次next会从上一次暂停的位置继续执行;



以下用示例说明:



def test(a,b):
   print("from test(),a+b=%d" %(a+b))
   return("我是return返回的")

def test_yield(a,b): #函数体中有yield关键字,函数就可以称为生成器函数
   print("from test_yield,a+b=%d" %(a+b))
   yield("我是第一次碰到yield关键字返回的") #程序运行时碰到yield,退出函数体并记录位置,下次调用跳过之前运行的代码
   print("from test_yield,a*2=%d" %(a*2))
   yield("我是第二次调用碰到yield关键字返回的")

print(test(11,33))
g = test_yield(11,33)
print(next(g)) #通过next()调用生成器函数
print(next(g)) #第二次调用生成器函数


'''
执行结果:

from test(),a+b=44
我是return返回的
from test_yield,a+b=44
我是第一次碰到yield关键字返回的
from test_yield,a*2=22
我是第二次调用碰到yield关键字返回的

'''

回答2:

当函数被调用时,函数体中的代码是不会运行的,函数仅仅是返回一个生成器对象。这里理解起来可能稍微有点复杂。 函数中的代码每次会在 for循环中被执行,接下来是最难的一部分: for第一次调用生成器对象时