[Python-ideas] Short form for keyword arguments and dicts
Steven D'Aprano
steve at pearwood.info
Sat Jun 29 18:56:02 CEST 2013
On 30/06/13 02:20, Joshua Landau wrote:
> We*do* have a way of extracting a submap from a dict.
Er, not really. Here's a dict: {}
What you talk about is extracting named attributes from a module or package namespace. That modules happen to use a dict as the storage mechanism is neither here nor there. I can do this:
class NoDict(object):
__slots__ = ['eggs']
fake_module = NoDict()
fake_module.eggs = 42
assert not hasattr(fake_module, '__dict__')
sys.modules['spam'] = fake_module
from spam import eggs
and it all just works. But I'm no closer to extracting a subdict from a dict.
> We*already* have a way of writing
>
> foo = foo
>
> across scopes, as we want to do here.
We sure do. And that's by just explicitly writing foo=foo. This is not a problem that needs solving. I'm kind of astonished that so many words have been spilled on a non-problem just to save a few characters for such a special case.
> This problem*has* been solved before, and it looks like:
>
> from module import these, are, in, the, submap
As I show above, this is about named attribute access, not dicts. And as you admit below, it doesn't lead to good syntax for extracting a subdict:
> I haven't been able to find a really good syntax from this, but something like:
>
> 1) foo(a, b, **(key1, key2 from locals()))
>
> 2) {**(key1, key2 from locals())}
>
> 3) import key1, key2 from {"key1": 123, "key2": 345}
>
> etc.
>
> And, รก mon avis, it's a hell of a lot better than previous proposals
> for (1) and (2) from this thread, and (3) from other threads.
>
> Again, not a proposal per se but a revelation.
--
Steven
More information about the Python-ideas
mailing list