[Python-Dev] Re: list += string?? (original) (raw)

David Abrahams dave at boost-consulting.com
Fri Aug 27 01:12:30 CEST 2004


David Abrahams <dave at boost-consulting.com> writes:

It was new when the iterator protocol was introduced. It wasn't explicitly intended that you get surprises for strings specifically, but it was explicitly intended that

list += whatever work like list.extend(whatever) and that whatever can be any iterable object. I figured as much.

Report from the field: I just discovered a bug that's been hiding in my code for a few months. The code was being exercised, but the result was the same as if the code had been correct until I threw some new examples at it. The problem was:

self.body[e[0]:e[1]] = s

self.body is a list of strings, and s is a string. Later ''.join(self.body) gets called, so for many cases the bug was hidden. No offense intended (okay, maybe a tiny little offense), but the experience here is a bit Perl-like.

Since strings are iterable objects, it's no more or less surprising than that 'for ch in "bomb"' works too . I want my ,= operator!

I still do, but it wouldn't have solved this problem.

-- Dave Abrahams Boost Consulting http://www.boost-consulting.com



More information about the Python-Dev mailing list