On Sun, Sep 11, 2011 at 6:45 PM, Terry Reedy <tjre...@udel.edu> wrote: > whereas, you are right, it breaks it noisily in the body. So Ian's claim > that StopIteration must be caught to avoid silent termination is not true. > Thanks for pointing out what I saw but did not cognize the full implication > of before. A better exception and an error message with an explaination > might still be a good idea, though.
But you can't write the function under the assumption that it will only be called from the function body. The following is a slight reorganization of your example that does exhibit the problem: for title in map(fix_title, ['amazinG', 'a helL of a fiGHT', '', 'igNordEd']): print(title) Output: amazing a Hell of a Fight Note that at first glance, my example would appear to be functionally equivalent to yours -- I've merely pulled the fix_title call out of the loop body and into the iterator. But actually they produce different results because fix_title misbehaves by not catching the StopIteration. Cheers, Ian -- http://mail.python.org/mailman/listinfo/python-list