大家都在讨论Python中使用生成器的好处。这是非常酷和有用的事情。但是没有人谈论它们的缺点。而面试官通常会利用这个漏洞。
除了这两个之外,使用生成器有什么其他缺点吗?
- 为了使生成器正常工作,您需要在内存中保留生成器函数的变量。
- 每次想要重复使用集合中的元素时,必须重新生成它。
大家都在讨论Python中使用生成器的好处。这是非常酷和有用的事情。但是没有人谈论它们的缺点。而面试官通常会利用这个漏洞。
除了这两个之外,使用生成器有什么其他缺点吗?
- 对于生成器的工作,您需要在内存中保存生成器函数的变量。
但是您不必保留整个集合在内存中,因此通常这正是您想要做出的权衡决策。
- 每次您要重用集合中的元素时,都必须重新生成它。
生成器必须被重新创建,但集合不需要。因此,这可能不是一个问题。
本质上,这归结为Lazy vs Eager evaluation的讨论。你会以CPU开销为代价换取流式处理的能力(而不是使用Eager evalution批量处理)。如果使用Lazy方法,代码可能会变得更加复杂难懂,所以在性能和简单性之间可能存在平衡。