美文网首页
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之生成器

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