python 迭代器和生成器

迭代器 调用了 __iter__方法 变成了可迭代对象  可迭代对象也会有__next__方法  取出下一个 直到无法取出

 

l = [1,2,3,4]

x_r = x.__iter__()

l_r.__next__()

1

 

for循环的本质 循环所有对象   都是迭代器协议

l = [1,2,3,4,5]
l_r = l.__iter__()
while True:
  try:
    print(l_r.__next__())
  except Exception:
    break

 

 

1
2
3
4
5

生成器

使用yield 关键字

 

def yie():
  while True:
    yield 2

 


yi = yie()
print(yi.__next__())
print(yi.__next__())
print(yi.__next__())

2
2
2

 

posted @ 2019-09-27 12:36  gidos  阅读(172)  评论(0编辑  收藏  举报