[Python-ideas] Keyword only argument on function call

Todd toddrjen at gmail.com
Thu Sep 6 09:58:03 EDT 2018


Sorry, nevermind.  I think I misunderstood the idea.

On Thu, Sep 6, 2018 at 9:56 AM Todd <toddrjen at gmail.com> wrote:

> I have encountered situations like this, and generally I just use **kwargs
> for non-critical  and handle the parameter management in the body of the
> function.
>
> This also makes it easier to pass the arguments to another function.  You
> can use a dict comprehension to copy over the keys you want, then unpack
> them as arguments to the next function.
>
> On Thu, Sep 6, 2018 at 6:16 AM Anders Hovmöller <boxed at killingar.net>
> wrote:
>
>> I have a working implementation for a new syntax which would make using
>> keyword arguments a lot nicer. Wouldn't it be awesome if instead of:
>>
>>         foo(a=a, b=b, c=c, d=3, e=e)
>>
>> we could just write:
>>
>>         foo(*, a, b, c, d=3, e)
>>
>> and it would mean the exact same thing? This would not just be shorter
>> but would create an incentive for consistent naming across the code base.
>>
>> So the idea is to generalize the * keyword only marker from function to
>> also have the same meaning at the call site: everything after * is a kwarg.
>> With this feature we can now simplify keyword arguments making them more
>> readable and concise. (This syntax does not conflict with existing Python
>> code.)
>>
>> The full PEP-style suggestion is here:
>> https://gist.github.com/boxed/f72221e7e77370be3e5703087c1ba54d
>>
>> I have also written an analysis tool you can use on your code base to see
>> what kind of impact this suggestion might have. It's available at
>> https://gist.github.com/boxed/610b2ba73066c96e9781aed7c0c0b25c . The
>> results for django and twisted are posted as comments to the gist.
>>
>> We've run this on our two big code bases at work (both around 250kloc
>> excluding comments and blank lines). The results show that ~30% of all
>> arguments would benefit from this syntax.
>>
>> Me and my colleague Johan Lübcke have also written an implementation that
>> is available at: https://github.com/boxed/cpython
>>
>> / Anders Hovmöller
>> _______________________________________________
>> Python-ideas mailing list
>> Python-ideas at python.org
>> https://mail.python.org/mailman/listinfo/python-ideas
>> Code of Conduct: http://python.org/psf/codeofconduct/
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20180906/62b85cea/attachment.html>


More information about the Python-ideas mailing list