如何确定函数是否返回按需计算结果的可迭代对象



如何确定函数会重新运行可迭代对象(根据需要计算结果(,而不是迭代器(返回已经计算的结果(?

例如,python文档中的函数filter()说:

从迭代的元素中构造迭代器,函数为其返回真正的

读到我会告诉这个函数返回一个实现可迭代协议的对象,但我不能确定如果将它与从16gb文件读取值的生成器一起使用,它不会占用我所有的内存,直到我进一步阅读并看到注意:

注意filter(function,iterable(等价于生成器表达式(在iterable if function(item(中item对item(

那么,如何判断该函数根据需要计算返回的结果,而不仅仅是在包含已计算值的临时列表上迭代?我必须检查来源?

如果文档说函数返回迭代器,那么可以很安全地假设它会动态计算项以节省内存。如果它确实一次计算了所有的项,那么它几乎肯定会返回一个list

最新更新