我是靠谱客的博主 冷静人生,最近开发中收集的这篇文章主要介绍二十、生成器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

生成器的简介

1、生成器的本质仍然为迭代器
2、生成器实现的方案有两种,分别为:

  1. 生成器函数
  2. 生成器表达式

3、生成器的特点:生成器只会记录当前位置与下一个位置

生成器函数

生成器函数的特点和定义:
1、生成器函数执行之后会得到一个生成器作为返回值
2、只要含有yield关键字的函数都是生成器函数,且yield不可以和return共用
3、yield关键字需要写在函数内部,与return不同的是其不会结束一个函数
4、只有在遇到__next__()时,生成器函数才会正式执行,并且遇到yield关键字暂停,当再次调用__next__()时,生成器函数才会继续执行,以此类推.
简单实例:

def generator():
    print(1)
    yield 'a' 
    print(2)
    yield 'b'
ret = generator() #调用generator()函数后,返回一个生成器,被ret变量接收,但此时并不会执行函数
result = ret.__next__() #遇到了__next__()方法,执行函数,遇到yield关键字停止
result2 = ret.__next__() #与上面一样,继续执行函数体,遇到yield结束
result3 = ret.__next__() #由于此时生成器的主体已经被执行完(在上一步执行完了第二个yield语句),所以再执行__next__()会报错。

说明: 针对上面实例,由于前两次的next()方法已经取空了生成器,所以第三次再调用next方法时,报错,详情见代码中注释。

生成器函数的应用实例

从1到两百万,逐次计数

def count():
	for i in range(1,2000001):
		yield "第{n}次".format(n=i)
g = count()
#然后调用生成器g即可,如:
n = g.__next__()

最后

以上就是冷静人生为你收集整理的二十、生成器的全部内容,希望文章能够帮你解决二十、生成器所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部