阅读背景:

生成器和模块

来源:互联网 

生成器对象

# 生成器对象的本质还是迭代器,只不过使我们自己通过写代码产生的
	'''生成器对象也有__iter__和__next__方法'''
eg:
    def index():
        print('我执行了')
    	yield
    res = index()
    print(res)
运行结果:
    <generator object index at 0x0158FB70>
# 上述代码可以看到,当我们函数里面有yield关键字时,第一次调用函数时,返回的是一个迭代器对象,也就是我们说的生成器
'''生成器对象也是节省存储空间的 特性与迭代器对象一致'''
"""
当函数体代码中含有yield关键字
    第一次调用函数并不会执行函数体代码
    而是将函数变成了生成器
    生成器可以点出__iter__和__next__方法
"""
# yield关键字:当函数体代码中有yield关键字时,第一次运行把函数变成生成器,后面在调用__next__方法时,每调用一次,执行到一个yield停止,当程序里所有的yield被调用完时,再调用会和迭代器一样报错StopIteration
eg:
    def index():
        print('伞兵一号')
        yield 123
        print('伞兵二号')
        yield 456
        print('伞兵三号')
        yield 789

    res = index()
    print(res.__next__())
    print(res.__next__())
    print(res.__next__())
运行结果:
    伞兵一号
    123
    伞兵二号
    456
    伞兵三号
    789
# yield也有return的传递返回值的作用
# 生成器对象的本质还是迭代器,只不过使我们自己通过写代码产生的
	'



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: