[Python-ideas] Why does BoundArguments use an OrderedDict?
ncoghlan at gmail.com
Thu Dec 18 08:05:57 CET 2014
On 18 December 2014 at 12:57, Guido van Rossum <guido at python.org> wrote:
> On Wed, Dec 17, 2014 at 6:15 PM, Antony Lee <antony.lee at berkeley.edu> wrote:
>> The discussion has drifted towards improving OrderedDict (something I
>> certainly approve), but the semantic question is still there: why should
>> BoundArguments.arguments be ordered by the parameter order? For example,
>> the recipe just below in the docs, for filling in the remaining default
>> arguments, breaks that ordering, without even mentioning that.
> Given that the answer hasn't been answered yet, perhaps nobody remembers the
> reason any more. But why does it bother you so much? In my experience the
> inspect module wasn't written for performance but for functionality. If it
> really hurts your ability to do something that you need to be fast, perhaps
> you can supply a patch? Make sure to run the tests and update the docs as
As far as I'm aware, it's an ordered dictionary because that makes the
default repr() predictable when binding arguments for a given function
(in the absence of after-the-fact manipulation like the example in the
docs that injects the default values as explicitly bound arguments).
The inspect.signature() machinery includes quite a few things like
that where the serialisation as a human readable string is considered
as important then the programmatic representation.
Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia
More information about the Python-ideas