我不知道下一个代码中的“self._iterator = iter(self._container)”。我不知道为什么iter(而不是__iter__)函数在这个地方使用,这个代码中iter的意思是什么
在django.http:
class HttpResponse(object):
def __iter__(self):
self._iterator = iter(self._container)
return self
def next(self):
chunk = self._iterator.next()
if isinstance(chunk, unicode):
chunk = chunk.encode(self._charset)
return str(chunk)
我读取的API:
返回一个迭代器对象。根据第二个参数的存在 ,第一个参数 的参数被解释为 。如果没有一个 第二个参数,邻必须是支持 迭代协议(该
__iter__()
法) 集合对象,或者它必须支持的 序列协议(该__getitem__()
方法与整数参数从0开始 )。如果它不支持那些协议的 ,TypeError
是 引发的。如果给出第二个参数 sentinel,那么o必须是一个可调用对象 。在这种情况下,迭代器创建的 将调用o,而对于每次调用其next()
方法的参数,将不会调用 参数;如果返回的值等于 至标记,则StopIteration将被提升为 ,否则返回值将为 。iter()
的第二种形式的一个有用应用是读取文件的 行,直到达到某一行 。下面的例子 读取文件,直到达到“停止”:
但我也不知道iter函数做了什么。
i know the __iter__:
class a(object):
def __init__(self,x=10):
self.x = x
def __iter__(self):
return self
def next(self):
if self.x > 0:
self.x-=1
return self.x
else:
raise StopIteration
请尽量使用代码,而不是文字,因为我的英语不是很好,谢谢