Someone should really write up a PEP -- this was just discussed a week or two ago.
Heh.. I should follow the list more closely.
I personally think this is adequately handled by writing:
(first, second), rest = something[:2], something[2:]
That's an alternative indeed. But the the proposed way does look better: for item in iterator: (first, second), rest = item[2:], item[:2] ... vs. for first, second, *rest in iterator: ...
I believe that this wish is an example of "hypergeneralization" -- an incorrect generalization based on a misunderstanding of the underlying principle.
Thanks for trying so hard to say in a nice way that this is not a good idea. :-)
Argument lists are not tuples [*] and features of argument lists should not be confused with features of tuple unpackings.
Do you agree that the concepts are related? For instance:
def f(first, second, *rest): ... print first, second, rest ... f(1,2,3,4) 1 2 (3, 4)
first, second, *rest = (1,2,3,4) print first, second, rest 1 2 (3, 4)
[*] Proof: f(1) is equivalent to f(1,) even though (1) is an int but (1,) is a tuple.
"Extended *tuple* unpacking" was a wrong subject indeed. This is general unpacking, since it's supposed to work with any sequence. -- Gustavo Niemeyer http://niemeyer.net