0
有人可以解釋__next__
如何處理下面的代碼嗎?我知道'下一個'用於迭代器來獲取可迭代的下一個項目,通常與next()
。Iterables/generators說明
我知道__iter__
部分得到執行,因爲list()
調用執行__next__
。但__next__
繼續執行,幾乎像一個while循環?直到StopIteration被執行?
此外,所有'返回'元素存儲在__next__
下?是否全部存儲在內存中,直到return self
根據__iter__
返回給調用函數?
class FRange(object):
def __init__(self, start, stop=None, step=None):
if stop is None:
self.i = 0
self.stop = start
self.step = 1
elif step is None:
self.i = start
self.stop = stop
self.step = 1
else:
self.i = start
self.stop = stop
self.step = step
def __iter__(self):
return self
def __next__(self):
if self.i < self.stop and self.step > 0:
self.i += self.step
return self.i - self.step
elif self.i > self.stop and self.step < 0:
self.i += self.step
return self.i - self.step
else:
raise StopIteration
def rangeFloat(args):
return list(FRange(*args))
上面的代碼產生例如:
For args = [-1.1, 2.4, 0.3], the output is
rangeFloat(args) = [-1.1, -0.8, -0.5, -0.2, 0.1, 0.4, 0.7, 1, 1.3, 1.6, 1.9, 2.2].
應該下一個(iter)是下一個(迭代器)? – user1179317
@ user1179317:的確如此。 – user2357112