生成器是一种迭代器。迭代器是一种可迭代对象,与任何其他可迭代对象一样,
您可以使用 for 循环遍历每个项目:
for vote in Vote.objects.get_top(myModel, limit=10, reversed=False):
print v.name, vote
如果需要按索引访问项目,可以将其转换为列表:
top_votes = list(Vote.objects.get_top(myModel, limit=10, reversed=False))
print top_votes[0]
但是,您只能对迭代器的特定实例进行一次迭代(与更通用的可迭代对象不同,如列表):
>>> top_votes_generator = Vote.objects.get_top(myModel, limit=3)
>>> top_votes_generator
<generator object at 0x022f7AD0>
>>> list(top_votes_generator)
[<Vote: a>, <Vote: b>, <Vote: c>]
>>> list(top_votes_generator)
[]
有关创建自己的生成器的更多信息,请参阅http://docs.python.org/tutorial/classes.html#generators