Python中yield使用方法
的有关信息介绍如下:Python中yield使用方法,yield生成器在遍历时候逐个返回, 遍历的过程就是调用next()的过程,好处就在于使用时候才产生数据,消耗内存。
打开Python开发工具IDLE,新建一个‘yield.py’文件,并写代码如下:
def fun():
yield 1
f = fun()
print (f)
F5运行程序,shell中打印出内容如下:
这是一个生成器对象
改写‘yield.py’文件,代码如下;
def fun():
yield 1
f = fun()
for i in f:
print (i)
F5运行程序,shell中打印出内容‘1’,这应该是最简单的生成器使用。
改写‘yield.py’文件,代码如下;
def fun():
print('hello' )
m = yield 1 #先不要管左边的m
print(m)
d = yield 2 #先不要管左边的d
print('World!')
c = fun()
print(next(c))
print(next(c))
两个yield,用两个next()函数就行,第一个运行yield 1函数返回1后停止运行
第二个运行到yield 2 停止运行。
F5运行程序,shell中打印出内容,其中打印的None其实就是我们m = yield 1中m的值,由于m没有被赋值,所以为None
改写‘yield.py’文件,代码如下;
def fun():
print('hello' )
m = yield 1
print(m)
d = yield 2
print('World!')
c = fun()
ret1=next(c)
print(ret1)
ret2=c.send('Canshu')
print(ret2)
c.send()就是传值给 m = yield 1中的m,ret2接收yield产生的2。send也会触发程序进入到下一个yield
F5运行程序,shell中打印出内容,特别注意的是d我们不能传值了,因为后边的代码里没有yield了.
如果ret1=next(c)这里我们只想进入下一步也可以用ret1=c.send(None)触发。如果传入的参数不是None会报错