python的关键字yield有什么作用

2020-10-28 教育 86阅读

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关键字返回的
'''
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com