Python yield使用方法示例

443次阅读  |  发布于5年以前

1. iterator
叠代器最简单例子应该是数组下标了,且看下面的c++代码:

复制代码 代码如下:

int array[10];
for ( int i = 0; i < 10; i++ )
printf("%d ", array[i]);

叠代器工作在一个容器里(array[10]),它按一定顺序(i++)从容器里取出值(array[i])并进行操作(printf("%d ", array[i])。

上面的代码翻译成python:

复制代码 代码如下:

array = [i for i in range(10)]
for i in array:
print i,

首先,array作为一个list是个容器,其次list这个内建类型有默认的next行为,python发现这些之后采取的秘密的没被各位看到的动作是:拿出array这丫容器的叠代器,从里面next一下把值给i供for循环主体处置,for把这个值print了。

现在的问题是数据可以做容器叠代,代码可以吗?

2. constructor

怎么把函数变成constructor? 在函数体里有yield就行了!

复制代码 代码如下:

def gen():
print 'enter'
yield 1
print 'next'
yield 2
print 'next again'

for i in gen():
print i

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8