擅长:python、mysql、java
<p>第一种方法可以返回一个对象,然后在返回对象之后再对其进行明显的修改,这对我来说是一种巨大的代码气味,不管你使用的是什么语言(也就是说,这不是“pythonic”的问题)。另外,为什么你想要一个函数,一次又一次地为同一个值生成迭代器,在不同的结果之间进行修改?对我来说似乎很不了解。在</p>
<p>如果使用这些值,<code>myGenerator2</code>创建的元组不是垃圾。如果一次只使用一个,它们将永远不会同时存在,而且您的程序几乎肯定会执行许多其他内存分配/释放。与<code>range(howMany)</code>返回的列表不同,<strong>将</strong>创建1000个您从未实际使用过的整数(除非您使用Python3,在这种情况下,<code>range</code>返回生成器而不是列表)。在</p>
<p>如果<strong>任何</strong>调用方可能希望保留对生成器返回的内容的引用(而Python程序员通常希望,当给定一个生成器时,如果需要多次使用生成器,则可以使用<code>items = list(generator)</code>),那么第二种方法要高得多。在</p>