擅长:python、mysql、java
<p>问题是这行代码:</p>
<pre><code>explore(path)
</code></pre>
<p>它是做什么的?</p>
<ul>
<li>用新的<code>path</code>调用<code>explore</code></li>
<li><code>explore</code>运行,创建生成器</li>
<li>生成器返回到执行<code>explore(path)</code>的位置。</strong></li>
<li>并被丢弃</li>
</ul>
<p>为什么要丢弃?它没有被分配给任何东西,也没有被迭代——它被完全忽略了。</p>
<p>如果你想对结果做点什么,那么,你必须对结果做点什么!;)</p>
<p>修复代码的最简单方法是:</p>
<pre><code>for name in explore(path):
yield name
</code></pre>
<p>当您确信您了解正在发生的事情时,您可能需要使用<code>os.walk()</code>。</p>
<p>一旦您迁移到Python 3.3(假设所有工作都按计划进行),您将能够使用新的<code>yield from</code>语法,此时修复代码的最简单方法是:</p>
<pre><code>yield from explore(path)
</code></pre>