On 12/15/2011 4:00 PM, Ethan Furman wrote:
Ned Batchelder wrote:
This is another place where Python is inconsistent.  We're told, "lists are for homogenous sequences of varying length, like a C array; tuples are for heterogenous aggregations of known length, like a C struct."   Then we define a function foo(*args), and Python gives us a tuple!  :-(

Where is that in the docs?  Sounds like a patch is needed:

"lists are for sequences where items need to be added/removed; tuples are for sequences/aggregations where items will not be added/removed once the tuple is created"

I don't know if it appears in the docs, but I hear it all the time, and Guido has said it (http://mail.python.org/pipermail/python-dev/2003-March/033964.html):
Tuples are for heterogeneous data, list are for homogeneous data.
Tuples are *not* read-only lists.
I don't want to get too far off the original point, which was: Python isn't as simple as we'd like to thing, and even smart beginners can be tripped up by things we've provided to them.



As Antoine noted, a tuple for 'args' is appropriate, as once args is created at function call time, we won't be adding or removing from it.