【发布时间】:2020-03-04 10:10:36
【问题描述】:
所以我正在编写一个函数,其中大量处理发生在循环体中,有时调用者可能会感兴趣的是获得某些计算的答案。
通常我会将结果放在一个列表中并返回该列表,但在这种情况下,结果太大(每个循环几百 MB)。
我没有真正考虑就写了这篇文章,期望 Python 的动态类型能够解决问题,但以下内容始终是作为生成器创建的。
def mixed(is_generator=False):
for i in range(5):
# process some stuff including writing to a file
if is_generator:
yield i
return
由此我有两个问题:
1) 作用域中存在yield 关键字是否会立即将对象变成生成器?
2) 有没有明智的方法来获得我想要的行为?
2.1) 如果不是,那么不可能的原因是什么? (就函数和生成器在 Python 中的工作方式而言。)
【问题讨论】:
标签: python python-3.x generator