В приведенных ниже примерах resp.results является итератором.
Version1:
items = []
for result in resp.results:
item = process(result)
items.append(item)
return iter(items)
Version 2:
for result in resp.results:
yield process(result)
Возвращает iter (items) в Version 1 лучше / хуже с точки зрения производительности / экономии памяти, чем простой возврат элементов?
В «Поваренной книге Python» Алекс говорит, что явный iter () «более гибкий, но используется реже», но каковы плюсы / минусы возврата iter (items) по сравнению с yield, как в версии 2?
Кроме того, как лучше всего протестировать итератор и / или дать результат? - вы не можете выполнить len (results), чтобы проверить размер списка?