菜鸟眼中的生成器
''' 生成器: 方法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使用生成器对延迟操作提供了支持,所谓延迟操作,是指在需要的时候才产生结果,而不是立刻产生结果,从而节省大量的 空间,这是生成器的主要好处。 '''