菜鸟眼中的生成器

'''
生成器:
方法1:将列表推导式的[]改成(),生成器不会一下子把所有内容生成出来,在我们需要的时候用next()去生成
方法2:在函数里面加上yield。
'''
# --------------------()------------------------------
b = (x for x in range(10))
print(next(b)) #0
print(next(b)) #1
print(next(b)) #2
print(next(b)) #3
print(next(b)) #4
print(next(b)) #5
print(next(b)) #6
print(next(b)) #7
print(next(b)) #8
print(next(b)) #9

# --------------yeild用法-------------------------------
'''
yield作用:返回对象,暂停函数,等待下次next重新激活
yield表达式只能在函数中使用
yield表达式可以使函数成为一个生成器
yield可以返回表达式结果,并且暂停函数执行。
'''
def func():
    print(1111)
    yield 1 #yield一个对象
    print(123)
    print(321)
    yield 2
    print(12345)

a = func()
# print(a) #生成器对象<generator object func at 0x000001437228E2A0>
print(next(a)) #第一次执行遇到yield 1函数暂停将上面运行结果返回,还想要后面的继续执行再写一个print(next(a))
print(next(a)) #第二次执行遇到yield 2函数暂停。
'''
Python使用生成器对延迟操作提供了支持,所谓延迟操作,是指在需要的时候才产生结果,而不是立刻产生结果,从而节省大量的
空间,这是生成器的主要好处。
'''

 

posted @ 2019-04-05 14:55  上古战神  阅读(120)  评论(0编辑  收藏  举报