<p><code>return</code>意味着您<em>结束该函数的代码路径,并且可以选择返回一个<em>单个</em>值(该值当然可以是一个元组,因此您可以通过一个值返回多个值)。你知道吗</p>
<p>如果要编写<em>生成器函数</em>,<code>yield</code>是您的朋友:</p>
<pre><code>def get_deck():
for rank in ranks:
for suit in suits:
<b>yield</b> [rank, suit]</code></pre>
<p>如果我们现在调用函数,我们将获得一个生成器对象:</p>
<pre><code>>>> get_deck()
<generator object get_deck at 0x7f4458438ca8>
</code></pre>
<p>如果希望基于生成器生成列表,可以对<code>get_deck()</code>函数的结果调用<code>list(..)</code>:</p>
<pre><code>>>> list(get_deck())
[[2, 'SPADE'], [2, 'HEART '], [2, 'DIAMOND'], [2, 'CLUB'], [3, 'SPADE'], [3, 'HEART '], [3, 'DIAMOND'], [3, 'CLUB'], [4, 'SPADE'], [4, 'HEART '], [4, 'DIAMOND'], [4, 'CLUB'], [5, 'SPADE'], [5, 'HEART '], [5, 'DIAMOND'], [5, 'CLUB'], [6, 'SPADE'], [6, 'HEART '], [6, 'DIAMOND'], [6, 'CLUB'], [7, 'SPADE'], [7, 'HEART '], [7, 'DIAMOND'], [7, 'CLUB'], [8, 'SPADE'], [8, 'HEART '], [8, 'DIAMOND'], [8, 'CLUB'], [9, 'SPADE'], [9, 'HEART '], [9, 'DIAMOND'], [9, 'CLUB'], [10, 'SPADE'], [10, 'HEART '], [10, 'DIAMOND'], [10, 'CLUB'], ['JACK', 'SPADE'], ['JACK', 'HEART '], ['JACK', 'DIAMOND'], ['JACK', 'CLUB'], ['QUEEN', 'SPADE'], ['QUEEN', 'HEART '], ['QUEEN', 'DIAMOND'], ['QUEEN', 'CLUB'], ['KING', 'SPADE'], ['KING', 'HEART '], ['KING', 'DIAMOND'], ['KING', 'CLUB'], ['ACE', 'SPADE'], ['ACE', 'HEART '], ['ACE', 'DIAMOND'], ['ACE', 'CLUB']]
</code></pre>
<p>您还可以<strong>在<code>get_deck</code>函数中构建一个列表,例如:</p>
<pre><code>def get_deck():
<b>result = []</b>
for rank in ranks:
for suit in suits:
<b>result.append(</b>[rank,suit]<b>)</b>
<b>return result</b></code></pre>