
On Thu, May 26, 2016 at 5:18 AM, Guido van Rossum <guido@python.org> wrote:
On Wed, May 25, 2016 at 6:56 PM, Steven D'Aprano <steve@pearwood.info> wrote:
On Wed, May 25, 2016 at 01:11:35PM +0000, Michael Selik wrote: What is your evidence for this claim? So far I've only seen one real- world use-case for this, and that single use-case would be well served by a simpler syntax:
a, b, c = **mapping
I have to warn here. This looks cool but it does something that AFAIK no other Python syntax uses -- it takes variable names and does something to those variables but *also* uses their actual names as string literals. I agree that the use cases for this seem pretty sweet, but perhaps we should give it a somewhat different syntax just so it's clear that the names on the LHS matter. The precedent that the targets must be actual names rather than anything you can assign to is also kind of scary.
I understand the concern, and maybe you are right. However , this: def func(y, z, x) print(x, y, z) func(**dict(x=1, y=2, z=3)) prints "1 2 3" , a nd so doe s func(x=1, y=2, z=3) and func(z=3, x=1, y=2) So `a, b, c = **mapping` would be perfectly in line with this. Of course there may still be confusion, but that would mean the user would probably already be confused about whether dicts are ordered or not, so that confusion would need to be fixed anyway. I think the key is that ** should _never_ be interpreted as unpack/repack by order. Or in other words, it always means unpack/repack _by name_. That said, here's a couple of suggestions: **(a, b, c) = **mapping **{a, b, c} = **mapping Although `a, b, c = **mapping` would still be more convenient. -- Koos PS. For even more explicitness: a from 'a', b from 'b', c from 'c' = **mapping Which would allow even b from 1, a from 0, x from 2 = **iterable Or a, b, c from 'a', 'b', 'c' in mapping b, a, c from 1, 0, 2 in mapping
-- --Guido van Rossum (python.org/~guido) _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/