yieldpython的简单介绍
python中yield是什么意思
一个带有 yield 的函数就是一个 generator,它和普通函数不同,生成一个 generator 看起来像函数调用,但不会执行任何函数代码,直到对其调用 next()(在 for 循环中会自动调用 next())才开始执行。虽然执行流程仍按函数的流程执行,但每执行到一个 yield 语句就会中断,并返回一个迭代值,下次执行时从 yield 的下一个语句继续执行。看起来就好像一个函数在正常执行的过程中被 yield 中断了数次,每次中断都会通过 yield 返回当前的迭代值。
具体,请参考下以下资料:
Python中的yield和send
yield的用法是:记住上一次返回时在函数体中的位置,调用此函数从上一次返回的位置开始执行。

send的用法时:send()方法返有一个参数,该参数指定的是上一次被挂起的yield语句的返回值。
区别:当send()的参数为None时,正好与next方法等价。在调用send()方法时,要么先调用一次next()
到函数挂起的位置,或者直接send(None)。
输出结果为:
python的关键字yield有什么作用
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关键字返回的
'''