[Python-ideas] Proto-PEP: Preserving the order of **kwargs in a function.
Eric Snow
ericsnowcurrently at gmail.com
Thu Apr 10 18:00:06 CEST 2014
On Thu, Apr 10, 2014 at 9:05 AM, Barry Warsaw <barry at python.org> wrote:
> Nice PEP; I'm sorry we didn't get a chance to discuss it at the language
> summit.
Yeah, I didn't even bother mentioning it because I didn't have any
performance numbers yet. I Hope to have some today, however.
> Since this is touching a fundamental and common aspect of the language, I
> think a lot of analysis has to be done for both performance and semantics if
> the feature is opt-out.
The proposal currently doesn't even involve opting anything. :)
Opt-out is my fallback proposal in case performance has significant
change when "people do crazy things".
> People do crazy things and even small performance
> hits add up. The use cases are valid but rare I submit, so I think most
> Python code doesn't care. Thus I'd lean toward an opt-in approach.
The problem is that opt-in causes all sorts of complication due to
some wrapper factories like functools.partial and many decorators.
They take **kwargs, and then unpack them in the wrapped call, so the
wrapper definition would have to know how to opt-in when the wrappee
has opted in. Andrew Barnert and I discussed this at length in the
previous python-ideas thread. My conclusion was that we should avoid
opt-in if at all possible.
>
> Perhaps a transition period makes sense. Add both opt-in and opt-out
> decorators, implement opt-in by default for Python 3.5 with a -X option to
> switch it to opt-out.
If we could work out the opt-in complications that could work.
However, I just don't think opt-in will be worth the trouble. That
said, right now we're mostly just guessing about the performance
impact. :) I hope to have a better answer to that question soon.
-eric
More information about the Python-ideas
mailing list