当前位置:   article > 正文

Python中yield详解_yield(x,y)函数

yield(x,y)函数

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
<generator object myexample at 0x00000238CCC6E580>
  • 1
  • 在调用生成器的过程中,每次遇到 yield 时函数会中断执行,并保存当前函数中局部变量得信息,返回yield的值。
  • 并在下一次执行next()方法时从当前位置继续运行,直到生成器被全部遍历完。
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
  • 10
1
2
3
4
5
6
7
8
9
  • 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
  • 6
  • 7
  • 8
  • 9
(1, 2, 3, 4, 5)
  • 1

生成器的作用?

  • 如果想具体化数据的形式,通常会将数据存储在一个列表中。但这样做,列表的内容将占用有形内存。列表越大,占用的内存资源就越多。

  • 如果数据集有某种逻辑,就不必存储在一个列表中,只需编写一个生成器,它将在需要时生成这些值,基本不占用内存。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/42263
推荐阅读
相关标签
  

闽ICP备14008679号