[Python-ideas] Javascript Destructuring Assignment
Ron Adam
rrr at ronadam.com
Thu Mar 8 06:54:10 CET 2007
Greg Ewing wrote:
> Ron Adam wrote:
>> Greg Ewing wrote:
>>
>>> Ron Adam wrote:
>>>
>>>> Also the '*' syntax can't be used to unpack nested items.
>>>
>>> Makes perfectly good sense to me.
>>
>> Didn't say it didn't.
>
> Then I still don't know what you meant by your original
> comment. What kind of nested item unpacking would you
> like to do that the * syntax wouldn't handle?
This was what I was that originally referring to.
data = [1, 2, [3, 4], 5]
a, b, c, d, e = data # can't unpack [3,4] here with *
a, b, [c, d], e = data # must use [] on the left side instead
>> Symmetry is not always the best solution. Sometimes asymmetry is good
>> because it can communicate a different context more clearly.
>
> Perhaps, but why do you think that the symmetry we already
> have between packing and unpacking is okay, but a new
> symmetry involving * wouldn't be okay?
The * is used mostly with names and they tend to look more alike than the
equivalent packing or unpacking using () or [] in more situations. The ()
and [] are much more explicit in both packing and unpacking operations.
I like the packing and unpacking features of python very much, it's just I
would like it a bit more if the '*' symbol for packing and unpacking were
different in this particular case. And especially so if '*' packing and
unpacking features are used in a more general way.
def foo(*args, **kwds): # packs here
bar(&args, &&kwds): # unpacks here
a, b, *c = a, b, c, d # packs here
a, b, c = &items # unpacks here
It would just be easier for me to see and keep in my head while I'm working
with it. I'm not sure I can explain it better than that, or say exactly
why as it probably has more to do with how my brain works than weather it
is okay or not okay in any programing sense.
Is that clearer? (I don't expect this to be changed)
Ron
More information about the Python-ideas
mailing list