迭代器协议:里面的next的方法,有些数据类型则通过先执行iter方法使遵循协议
迭代器:是遵循迭代器协议的一种数据类型
生成器:是一种数据类型,自动实现迭代器协议(也包含使用iter方法),所以生成器就是可迭代对象
生成器的分类可以分为两大类:生成器函数,生成器表达式
1,生成器函数,常规的函数定义,使用yieid语句而不是return语句,yieid语句一次返回一个结果,每个结果中间,挂起函数的状态,以便下次继续使用
def text(): yield 1 yield 2 yield 3 moce = text() print(moce.__next__()) print(moce.__next__()) print(moce.__next__())
三元表达式:
name = 'wake' #name = 'weal' res = 'hehe' if name =='wake' else 'ww' print(res)
将列表解析的[]换成()就是表达式生成器,生成器表达式更省内存