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! _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com