A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/2004-August/048389.html below:

[Python-Dev] list += string??

[Python-Dev] list += string??Tim Peters tim.peters at gmail.com
Thu Aug 26 16:30:53 CEST 2004
[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>.
More information about the Python-Dev mailing list

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