擅长:python、mysql、java
<p>生成器是一种迭代器。迭代器是一种iterable对象,和其他iterable一样</p>
<p>可以使用for循环遍历每个项:</p>
<pre><code>for vote in Vote.objects.get_top(myModel, limit=10, reversed=False):
print v.name, vote
</code></pre>
<p>如果需要按索引访问项,可以将其转换为列表:</p>
<pre><code>top_votes = list(Vote.objects.get_top(myModel, limit=10, reversed=False))
print top_votes[0]
</code></pre>
<p>但是,您只能在迭代器的特定实例上迭代一次(与更一般的可迭代对象(如列表)不同):</p>
<pre><code>>>> 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)
[]
</code></pre>
<p>有关创建自己的生成器的详细信息,请参见<a href="http://docs.python.org/tutorial/classes.html#generators" rel="nofollow noreferrer">http://docs.python.org/tutorial/classes.html#generators</a></p>