Multi-argument append() is illegal

Guido van Rossum guido at
Mon Feb 28 16:41:02 CET 2000

I've noticed that there is some code out there that creates a list of
tuples and uses code like list.append(a,b,c) to add the tuple (a,b,c)
to the list.  According to the documentation, this is illegal:
append() only takes a single argument, and one should write
list.append((a,b,c)).  However, the actual append() implementation
didn't mind, and implemented list.append(a,b,c) as
list.append((a,b,c)).  Many people are using this even though it's
never been documented.

I am going to rectify this in Python 1.6 -- people coming from other
languages might well expect list.append(a, b, c) to mean the same as
list.append(a); list.append(b); list.append(c), and it's always been
my philosophy to make ambiguous syntax illegal rather than to pick one
interpretation randomly.

This message is simply a heads-up that you should be aware of this
change (when 1.6 comes out, which should be before the summer).  You
can test your programs using the current CVS version (see  You can also grep through your
sources for a pattern like "\. *append *\(.*," -- which doesn't find
every occurrence, but is a good starting point.  If you have a smarter
grep-like tool you may be able to write a tighter matching expression.

Watch out for false hits though: some classes define their own
multi-argument append()...

--Guido van Rossum (home page:

More information about the Python-list mailing list