首页 > 解决方案 > Python 生成器的缺点?

问题描述

每个人都在谈论在 Python 中使用生成器的优势。这真的很酷而且很有用。但是没有人谈论他们的缺点。而面试官通常会利用这个差距。

那么除了这两个之外,使用生成器还有其他缺点吗?

  1. 对于生成器的工作,您需要将生成器函数的变量保存在内存中。
  2. 每次您想重用集合中的元素时,都必须重新生成它。

标签: pythongenerator

解决方案


  1. 对于生成器的工作,您需要将生成器函数的变量保存在内存中。

但是您不必将整个集合保存在内存中,因此通常这正是您想要做出的权衡。

  1. 每次您想重用集合中的元素时,都必须重新生成它。

必须重新创建生成器,但不需要重新创建集合。所以这可能不是问题。

本质上,它归结为关于 Lazy 与 Eager 评估的讨论。您需要权衡 CPU 开销以换取流处理能力(而不是使用急切评估的批量处理)。如果使用惰性方法,代码可能会变得更加难以阅读,因此也可能需要在性能和简单性之间进行权衡。


推荐阅读