迭代器
掌握for循环
实际上for循环的本质,就是将一个可迭代的变成迭代器
每一次从中取值都相当于执行了一次next
如果是迭代器,那么只能取一次值
生成器 - 本质就是迭代器
生成器函数(返回值是生成器) :
处理比较复杂的逻辑
yield的形式返回值,并且再一次调用中可以多次执行yield
生成器表达式的(结果是生成器) :
处理比较简单的逻辑
并且能够以更少的代码来节省时间空间
# 计算移动平均值的例子
def cal_avg():
sum = 0
count = 0
while True: if count: num = yield sum/count else: num = yield 0 sum += num count += 1 g=cal_avg() print(g.__next__())#0 avg1 = g.send(7) print(avg1)#7 avg1 = g.send(9) print(avg1)#9 avg1 = g.send(8) print(avg1)#8 avg1 = g.send(10) print(avg1)#10