<div dir="ltr"><div>I was previously constructing an object like this:<br></div><div><br></div><div>tb = TemporalBehavior(**kwargs, **parameters)</div><div><br></div><div>where various subclasses were doing things like</div><div><br></div><div>def __init__(self, some_kwarg, some_other_kwargs, some_parameter, some_other_parameter):</div><div><br></div><div>Then I realized that I want to pass the paramters as a dictionary so that I can store it.  I changed the code to this:</div><div><br></div><div><div>def __init__(self, some_kwarg, some_other_kwargs, parameters):</div></div><div><br></div><div>but I still need "some_parameter", so I did</div><div><br></div><div>some_parmeter = parameters['some_parameter']</div><div>some_other_parmeter = parameters['some_other_parameter']<br></div><div><br></div><div>Great, but now I have to check that exactly the list of parameters that I need is being sent in, so I need to do something like</div><div><br></div><div>if set(parameters) != ('some_parameter', 'some_other_parameter'):</div><div>    raise ValueError</div><div><br></div><div>It might be nice to do instead</div><div><br></div><div>{'some_parameter': p, 'some_other_parameter': q} = parameters</div><div><br></div><div>I'm just throwing this suggestion out there.  I realize that this is pretty niche, but who knows where Python will be in ten years.</div><div><br></div><div>I also know that this is possible (and fairly easy) to implement from when I worked on PEP 448.</div><div><br></div><div><div>This is similar to unpacking iterables like this:<br><br>a, b = range(2)</div><div>a, b, *c = range(5)</div><div><br></div><div>It's the mapping version of it:</div><div><br>{'a': a, 'b': b} = some_dict</div><div>{'a': a, 'b': b, **c} = some_dict</div><div><br></div></div><div>Best,</div><div>Neil</div></div>