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

Aahz aahz at pythoncraft.com
Thu Aug 26 16:23:25 CEST 2004


On Thu, Aug 26, 2004, David Abrahams wrote:

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".

l = ['foo'] l += ('bar', 'baz') l ['foo', 'bar', 'baz']

Augmented assignment for lists works with any sequence type (and probably iterators, too, but I didn't check). Strings are a sequence type, which occasionally has unintended consequences.

Aahz (aahz at pythoncraft.com) <*> http://www.pythoncraft.com/

"To me vi is Zen. To use vi is to practice zen. Every command is a koan. Profound to the user, unintelligible to the uninitiated. You discover truth everytime you use it." --reddy at lion.austin.ibm.com



More information about the Python-Dev mailing list