發電機是一種迭代的上市。迭代器是一種迭代的對象,並像任何其他迭代,
可以每一項使用遍歷一個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