On 25.05.2016 15:11, Michael Selik wrote:
Clojure also supports mapping destructuring. Let's add that to Python!

+1 for the general idea.

Let's keep Python simple by providing flexible tools like the one you proposed instead of a monolithic switch-case. :)


    py> mapping = {"a": 1, "b": 2, "c": 3}
    py> {"a": x, "b": y, "c": z} = mapping
    py> x, y, z
    (1, 2, 3)
    py> {"a": x, "b": y} = mapping
    Traceback:
    ValueError: too many keys to unpack

Nice! I like the error message.

I could imagine how this can be generalized to attribute access BUT I think its easier to discuss dict unpacking to the end first.

This will be approximately as helpful as iterable unpacking was before PEP 3132 (https://www.python.org/dev/peps/pep-3132/).

I'd add that all benefits for iterable unpacking apply as well. So, what's true for iterable unpacking is true for dict unpacking, too.

I hope to keep discussion in this thread focused on the most basic form of dict unpacking, but we could extended mapping unpacking similarly to how PEP 3132 extended iterable unpacking. Just brainstorming...

    py> mapping = {"a": 1, "b": 2, "c": 3}
    py> {"a": x, **rest} = mapping
    py> x, rest
    (1, {"b": 2, "c": 3})

That's basically suppressing the the ValueError above with the same justification as for PEP 3132.

I for one find this one of the shortest proposals compared to other recent proposals I have seen.  :)

Best,
Sven