一、 生成器:
1.1 特点:
生成器的本质就是一个迭代器
生成器一定是一个迭代器,迭代器不一定是一个生成器
生成器是可以让程序员自己定义的一个迭代器
生成器的好处,节省内存空间
生成器的特性继承迭代器特性:一次性的,惰性机制,从上向下
1.2 生成器的普通方法:
# 方式一: # 每次创建一个新的生成器对象 def func(): print(111) yield 5 print(222) yield 10 print(func().__next__()) # 每次创建一个新的生成器对象 print(func().__next__()) # 方式二: # 只创建一个生成器 def func(): print(111) yield 5 # 碰到yield不结束就挂起 print(222) yield 10 generator = func() # 只创建一个生成器 print(generator.__next__()) # 第一次打印 111 5 生成器停在yield 5 处 挂起 print(generator.__next__()) # 第二次打印 222 10 生成器停在yield 10 处 挂起 print(generator.__next__()) # 第三次无法找到新的生成器,报错 # python2 next() iter() # python3 next() __next__() iter() __iter__() # 方式三: next() == generator.__next__() 方法相同 def func(): print(111) yield 5 print(222) yield 10 generator = func() print(next(generator)) # 第一次打印 111 5 生成器停在yield 5 处 print(next(generator)) # 第二次打印 222 10 生成器停在yield 10 处 print(next(generator)) # 第三次无法找到新的生成器,报错