擅长:python、mysql、java
<p>使用<code>yield</code>而不是<code>return</code>并将其移动到循环中,如下所示:</p>
<pre><code>for rline in revOut.stdout:
if "Nmap scan report for " in rline:
...
elif "MAC Address: " in rline:
...
yield revNmapName, rip, rnmapmac
</code></pre>
<p>稍后,您可以在for循环中使用创建的<em>生成器</em>(返回<code>yield</code>的函数就是其中之一),例如:</p>
<pre><code>for rev, rip, rnmap in revLookup(ips):
print rev, rip, rnmap
</code></pre>
<p>你可以看看这个问题的一个很好的答案<a href="https://stackoverflow.com/questions/231767/what-does-the-yield-keyword-do-in-python">What does the "yield" keyword do in Python?</a></p>
<p>编辑:添加了方法的用法</p>