赞
踩
Python 中 yield 关键字
可以先把yield当作return的同胞兄弟来看,他们都在函数中使用,并履行着返回某种结果的职责。
return和yield两者的区别是:
当函数执行到return时,函数直接返回所有结果并跳出该函数,然后销毁该函数中得局部变量。
而有yield的函数则返回一个可迭代的 generator(生成器)对象,你可以使用for循环或者调用next()方法遍历生成器对象来提取结果。
生成器函数:
在 Python 中,使用了yield的函数被称为生成器。调用带有yield得函数,就会返回一个生成器对象。
def myexample():
x = 1;
y=10
while x<y:
yield x
x+=1
example=myexample()
example
<generator object myexample at 0x00000238CCC6E580>
def myexample():
x = 1;
y=10
while x<y:
yield x
x+=1
example=myexample()
for i in example:
print(i)
1
2
3
4
5
6
7
8
9
生成器的调用方法:
生成器可以使用for循环调用,也可使用nextr()方法调用。其中,for循环调用如上面代码所示。next()方法调用如下:
def myexample():
x = 1;
y=10
while x<y:
yield x
x+=1
example=myexample()
next(example),next(example),next(example),next(example),next(example)
(1, 2, 3, 4, 5)
生成器的作用?
如果想具体化数据的形式,通常会将数据存储在一个列表中。但这样做,列表的内容将占用有形内存。列表越大,占用的内存资源就越多。
如果数据集有某种逻辑,就不必存储在一个列表中,只需编写一个生成器,它将在需要时生成这些值,基本不占用内存。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。