[Python-ideas] Keyword only argument on function call
Rhodri James
rhodri at kynesim.co.uk
Fri Sep 7 09:13:17 EDT 2018
On 07/09/18 03:38, Anders Hovmöller wrote:
>> For comparison, my reaction did indeed involve awe. It was full of it,
>> in fact :-p Sorry, but that syntax looks at best highly misleading --
>> how many parameters are we passing? I don't like it at all.
>
> (nitpick: we're passing arguments, not parameters)
potayto, potahto
> I don't see how this could be confusing. Do you think it's confusing how
> many parameters a function has in python now because of the keyword only
> marker? This suggestion follows the same rules you should already be
> familiar with when counting parameters, why would you now have trouble
> counting when the line doesn't begin with "def " and end with ":"?
I counted commas. I came up with the wrong number. Simple.
For what it's worth, I don't like the keyword-only marker or the
proposed positional-only marker for exactly the same reason.
>>>> I'm in favour of consistent naming when it helps the code, when the
>>>> names are clear and relevant.
>>>
>>>
>>> Which is what I'm saying.
>>
>> Actually you are not. Adding specific syntax support is a strong signal
>> that you expect people to use it and (in this case) use consistent
>> naming. Full stop. It's a much stronger statement than you seem to think.
>>
>
> I expect this to be common enough to warrant nicer language constructs
> (like OCaml has). I expect people today to use positional arguments to get
> concise code, and I think python pushes people in this direction. This is a
> bad direction imo.
I disagree. Keyword arguments are a fine and good thing, but they are
best used for optional arguments IMHO. Verbosity for the sake of
verbosity is not a good thing.
>
>
>>>> I disagree that f(*, page) is more readable than an explicit named
>>>> keyword argument f(page=page).
>>>>
>>>
>>> People prefer f(page) today. For some reason. That might refute your
>>> statement or not, depending on why they do it.
>>
>> Evidence?
>>
>
> Run my analysis tool. Check the numbers. It's certainly true at work, and
> it's true for Django for example.
OK, then your assertion didn't mean what I thought it means, and I'm
very confused about what it does mean. Could you try that again?
--
Rhodri James *-* Kynesim Ltd
More information about the Python-ideas
mailing list