В случае с вашим примером я, вероятно, написал бы это как:
foos = (i for i in xrange(10))
bars = (j for j in foos)
bazs = (k for k in bars)
Учитывая более описательные имена, я думаю, что это, вероятно, было бы совершенно ясно, и я не могу представить, что есть какая-то ощутимая разница в производительности.
Возможно, вы думаете о таких выражениях, как:
(x for x in xs for xs in ys for ys in lst)
- на самом деле, это даже не верно. Вы должны поместить вещи в другом порядке:
(x for ys in lst for xs in ys for x in xs)
Я мог бы написать это в качестве быстрого способа выравнивания списка, но в целом я думаю, что вы пишете: время, которое вы экономите, набирая меньше, обычно уравновешивается дополнительным временем, которое вы тратите на правильное выражение генератора. *