如何在Python中创建一个可迭代函数(或者可迭代对象)
问题 链接
Python里面的迭代对象遵从迭代器协议,这意味着它们都会提供两个方法:iter()
和next()
。iter()
将返回迭代对象,且在循环开始时被隐式调用。next()
方法返回下一个值,且在每次循环推进时被隐式调用。当迭代器对象中没有可返回值时,next()
方法会抛出StopIteration异常,这个异常会被循环捕捉以终止循环。
下面是一个计数器的例子:
class Counter:
def __init__(self, low, high):
self.current = low
self.high = high
def __iter__(self):
return self
def next(self): # Python 3: def __next__(self)
if self.current > self.high:
raise StopIteration
else:
self.current += 1
return self.current - 1
for c in Counter(3, 8):
print c
这段代码将会输出:
3
4
5
6
7
8
下面是一个更简单的方法:
def counter(low, high):
current = low
while current <= high:
yield current
current += 1
for c in counter(3, 8):
print c