On 2/3/2014 5:22 PM, andrea crotti wrote:

That's already better, another thing which I just thought about could
be this (which actually happened a few times):

def original_gen():
     count = 0
     while count < 10:
         yield count
         count += 1


def consumer():
     gen = original_gen()
     # lis = list(gen)
     for n in gen:
         print(n * 2)

if I uncomment the line with "lis = list(gen)"
it won't print anything anymore, because we have to make sure we only
loop over ONCE.
That maybe is a better example of possible drawback? (well maybe not a
drawback but a potential common mistake)

A couple of days ago I made a similar error. Stdlib code

a  = list(f(iterable1))
return g(a)  # g just need an iterable

The return value is buggy. Insert for i in a: print(i) to debug. Notice that g does not need a concrete list. Delete list wrapper. Return value goes away. Because I did other things between the last two steps, I did not immediately make the connection and was initially puzzled. Deleting debug code made things work again. Using itertools.tee would have done the same.

--
Terry Jan Reedy

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to