python中的循环和迭代

在Python语法中如果用for-in循环,那么就要使用迭代器协议,只要对象支持__iter__和__next__双下划线方法,那么就能够使用for-in循环。

 1 class RepeaterIterator:
 2     def __init__(self, source):
 3         self.source = source
 4 
 5     def __next__(self):
 6         return self.source.value
 7 
 8 
 9 class Repeater:
10     def __init__(self, value):
11         self.value = value
12 
13     def __iter__(self):
14         return RepeaterIterator(self)
15 
16 
17 repeater = Repeater('Hello')
18 for item in repeater:
19     print(item)

上面的代码会在控制台循环打印"hello".

上面的for-in那一段代码可以展开成下面的但是效果相同的代码:

1 repeater=Repeater('Hello')
2 iterator = repeater.__iter__()
3 while True:
4     item = iterator.__next__()
5     print(item)

从上面可以看出,for-in只是简单的while循环的语法糖。

  • 首先让repeater对象准备迭代,即调用__iter__方法来返回实际的迭代器对象。
  • 然后循环反复调用迭代器对象的__next__方法,从中获取值。

 

上一篇:(十)Asp.NET使用Repeater进行数据显示


下一篇:.NET ------ Repeater 遍历数据显示在页面上