Каковы преимущества «yield item» по сравнению с return iter (items)?

В приведенных ниже примерах 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), чтобы проверить размер списка?

6
задан espeed 3 June 2011 в 19:14
поделиться