python中的yield用法

yield 关键字做了什么

可以先把yield 当作return 的同胞兄弟来看

有return的函数直接返回所有结果,程序终止不再运行,并销毁局部变量

而有yield 的函数则返回一个可迭代的generator 生成器对象,你可以使用for 循环或者调用next 方法遍历生成器对象来提取结果

在python中,使用了yield 的函数被称为生成器,有点套娃的感觉

调用一个yield ,就会返回一个生成器对象

在调用生成器函数的过程中,每次遇到yield 时函数会暂停并保存当前所有的运行信息,保留局部变量,返回yield 的值,并在下一次执行next 方法时从当前位置继续运行,直到生成器全部遍历完

可以看到,simple——generator 函数返回一个生成器,调用next 方法后,函数开始运行,遇到第一个yield 关键字,返回生成的值 1 ,程序暂停

带yield 的函数是一个生成器,这个生成器有一个方法就是next next 就相当于 下一步 生成那个数,这一次的next 开始的地方是接着上一次的next 停止的地方执行的

所以调用next 的时候,生成器并不会从函数的开始执行,只是接着上一步停止的地方开始,然后遇到yield 后,return 出要生成的数,此步就结束

生成器有哪些作用,如果想具体化数据的形式,他唱会将数据存储在一个列表中,但这样做,列表的内容将占用有形内存,列表越大,占用的内存资源就越多

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

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2015-2024 TeX_baitu
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~