生成器对象
# 生成器对象的本质还是迭代器,只不过使我们自己通过写代码产生的
'''生成器对象也有__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的传递返回值的作用
# 生成器对象的本质还是迭代器,只不过使我们自己通过写代码产生的
'