我试图在我的生成器的以下两个定义之间做出决定。哪个更好?哪个“更pythonic”?有没有办法减轻每个人的缺点?
def myGenerator1(howMany):
result = [0,0,0]
yield result
for i in range(howMany)
modifyListInPlace(result)
yield result
for val in myGenerator1(1000):
useValThenForgetIt(val)
def myGenerator2(howMany):
result = (0,0,0)
yield result
for i in range(howMany)
result = createNewUpdatedTuple(result)
yield result
for val in myGenerator2(1000):
useValThenForgetIt(val)
第一个修改了生成器返回的值,可能会弄乱我还没有预见到的调用代码。在这种情况下,第二个会产生 1000 个元组的垃圾,或者如果我增加“howMany”(我可能会)会产生更多。
我作为示例给出的循环只是我当前对生成器的使用。我认为我永远不会保存从中产生的值,但它是一种实用程序,可能在其他地方有用。