[David Abrahams] > I just discovered the following behavior: > > C:\Documents and Settings\dave>python > Python 2.3 (#46, Aug 25 2003, 18:37:29) [MSC v.1200 32 bit (Intel)] on win32 > Type "help", "copyright", "credits" or "license" for more information. > >>> prefix = ['foo', 'bar', 'baz'] > >>> prefix += 'bomb' # meant to write prefix += [ 'bomb' ] > >>> prefix > ['foo', 'bar', 'baz', 'b', 'o', 'm', 'b'] > >>> > > Is it new and/or intentional? I would have expected an error from the > +=. I was very surprised when my error "passed silently". 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. >>> prefix = ['foo', 'bar', 'baz'] >>> def g(): ... for ch in "bomb": ... yield ch ... >>> prefix += g() >>> prefix ['foo', 'bar', 'baz', 'b', 'o', 'm', 'b'] >>> Since strings are iterable objects, it's no more or less surprising than that 'for ch in "bomb"' works too <wink>.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4