[Python-Dev] Extending tuple unpacking (original) (raw)
Reinhold Birkenfeld reinhold-birkenfeld-nospam at wolke7.net
Tue Oct 11 20:43:59 CEST 2005
- Previous message: [Python-Dev] Extending tuple unpacking
- Next message: [Python-Dev] Extending tuple unpacking
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Greg Ewing wrote:
Guido van Rossum wrote:
BTW, what should
[a, b, *rest] = (1, 2, 3, 4, 5) do? Should it set rest to (3, 4, 5) or to [3, 4, 5]? Whatever type is chosen, it should be the same type, always. The rhs could be any iterable, not just a tuple or a list. Making a special case of preserving one or two types doesn't seem worth it to me.
I don't think that
[a, b, c] = iterable
is good style right now, so I'd say that
[a, b, *rest] = iterable
should be disallowed or be the same as with parentheses. It's not intuitive that rest could be a list here.
? And then perhaps
*rest = x should mean rest = tuple(x) Or should that be disallowed Why bother? What harm would result from the ability to write that? There certainly is a need for doing the same from the end: *rest, a, b = (1, 2, 3, 4, 5) I wouldn't mind at all if *rest were only allowed at the end. There's a pragmatic reason for that if nothing else: the rhs can be any iterable, and there's no easy way of getting "all but the last n" items from a general iterable. Where does it stop? For me, it stops with *rest only allowed at the end, and always yielding a predictable type (which could be either tuple or list, I don't care).
+1. Tuple is more consistent.
BTW, and quite unrelated, I've always felt uncomfortable that you have to write
f(a, b, foo=1, bar=2, *args, **kwds) I've always wanted to write that as f(a, b, *args, foo=1, bar=2, **kwds) Yes, I'd like that too, with the additional meaning that foo and bar can only be specified by keyword, not by position.
That would be a logical consequence. But one should also be able to give default values for positional parameters. So:
foo(a, b, c=1, *args, d=2, e=5, **kwargs) ^^^^^^^^^ ^^^^^^^^ positional only with kw or with kw
Reinhold
-- Mail address is perfectly valid!
- Previous message: [Python-Dev] Extending tuple unpacking
- Next message: [Python-Dev] Extending tuple unpacking
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]