On Thu, 11 Jul 2013 17:06:39 +1000, Chris Angelico wrote: > On Thu, Jul 11, 2013 at 4:06 PM, Steven D'Aprano <st...@pearwood.info> > wrote: >> I think the right solution here is the trivial: >> >> def exhaust(it): >> """Doc string here.""" >> deque(maxlen=0).extend(it) >> >> >> which will be fast enough for all but the tightest inner loops. But if >> you really care about optimizing this: >> >> >> def factory(): >> eatit = deque(maxlen=0).extend >> def exhaust_iter(it): >> """Doc string goes here""" >> eatit(it) >> return exhaust_iter >> >> exhaust_it = factory() >> del factory >> >> >> which will be about as efficient as you can get while still having a >> custom docstring. > > Surely no reason to go for the factory function: > > def exhaust(it,eatit=deque(maxlen=0).extend): > eatit(it)
Now you have the function accept a second argument, which is public, just to hold a purely internal reference to something that you don't want the caller to replace. -- Steven -- http://mail.python.org/mailman/listinfo/python-list