美文网首页
python---基本知识19之生成器

python---基本知识19之生成器

作者: hello_我的哥 | 来源:发表于2018-01-27 10:17 被阅读16次

概念?

是一个特殊的迭代器,拥有迭代器的特性;主要是为了节省内存空间,就是用到了才去生成,才去取值,而不是一下子把所有的都取出来;

创建方式:

1.通过推导式:其实就是把列表推导式的[]换成()

l=(x for x in range(10000000))

print(l.__next__())

2.通过生成器函数,生成器函数主要有两个特点,第一是函数中包含yield语句,第二是函数的执行结果就是一个生成器:

def generator():

    print(5)

    yield 6

    print(4)

    yield 1

gen=generator()

print(next(gen))

print(next(gen))

访问生成器数据:可以通过next()函数,或者生成器对象的方法:__next__(),以及for in;我们应该注意到的是函数的执行结果是一个生成器,但是其实我们在调用函数执行的时候,函数并没有执行,只有当访问生成器数据的时候才会执行,并且遇到yield语句的时候就会被暂停;

next(gen)

gen.__next__()

for i in gen:

    print(i)

send()方法:其实和next()的功能差不多,只不过多了一个功能,就是可以给上一次yield语句指定返回结果,这里需要注意一点是上一次,那么如果是第一次执行的话,由于没有上一次,所以指定的结果只能为none;

def generator():

    print(5)

    res= yield 6

    print(res)

    yield 1

gen=generator()

print(gen.send(None))

print(gen.send('a'))

注意事项:首先生成器如果碰到return语句,会报StopIteration异常,因为return就是返回,后面就不会执行了,肯定会抛出异常,第二点是生成器和迭代器一样,只会执行一遍,执行完毕就会被释放;

相关文章

  • python---基本知识19之生成器

    概念? 是一个特殊的迭代器,拥有迭代器的特性;主要是为了节省内存空间,就是用到了才去生成,才去取值,而不是一下子把...

  • Python---基本知识13之元组

    1.什么是元组? 就是有序列得不可变得集合,这里和列表稍微不一样,列表是有序得可变得集合; 2.元组的定义:元组是...

  • Python---基本知识15之集合

    集合的概念? 无序的,不可随机访问的,不可重复的元素集合,就和数学里面学习的集合差不多; 1.集合的定义:集合分为...

  • Python---基本知识9之循环

    什么是循环? 指的就是重复做某一件事;废话不多说,直接看语法; 首先我们看的是while循环,while循环语法就...

  • Python---基本知识14之字典

    什么是字典? 字典是无序得可变的元素集合; 字典的定义: 1.直接写:从以下代码中我们可以看到字典是由一对大括号组...

  • Python---基本知识1_之注释

    什么是注释?为什么要注释? 我们编写的代码需要翻译成电脑认识的语言,即机器语言,那注释呢?注释是写给我们自己看的,...

  • Python---基本知识17之函数1

    什么是函数? 函数其实就是把许多代码放在一起,包装好之后的一种形式,使得他可以被多次复用。 函数的简单定义: 如下...

  • Python---基本知识17之函数2

    偏函数:就是针对原函数参数值得改变使得原函数偏爱于新的值;如下面代码所示,首先导入functools包,使用的是f...

  • Python---基本知识18之装饰器

    首先什么是装饰器? 我们可以从字面意思去理解,即在一个器具上装饰某些东西,在代码中表现为在函数名和函数体不发生改变...

  • python---基本知识21之文件操作

    文件介绍:文件其实没什么好介绍的,我们在平时工作以及使用电脑的时候,都会用到各种各样的文件,首先,文件有多种格式,...

网友评论

      本文标题:python---基本知识19之生成器

      本文链接:https://www.haomeiwen.com/subject/fjdwaxtx.html