[Python-Dev] PEP 3102: Keyword-only arguments

Terry Reedy tjreedy at udel.edu
Fri May 5 23:26:51 CEST 2006


"Fred L. Drake, Jr." <fdrake at acm.org> wrote in message 
news:200605050951.04048.fdrake at acm.org...
> On Friday 05 May 2006 02:38, Terry Reedy wrote:
> > My point has been that the function writer should not make such a
> > requirement (for four no-defaut, required params) and that proposing to 
> > do
> > so with the proposed '*' is an abuse (for public code).  The caller 
> > should
>
> And what exactly is the point at which constraining use goes from 
> unreasonable
> to reasonable?  Perhaps that involves a judgement call?  I think it does.

Well, if so, it is my increasingly strong judgment that requiring another 
programmer to junk up his or her code with

  make_person(name=name, age=age, phone=phone, location = location)

# instead of #

  make_person(name, age, phone, location)

# or *

  make_person(name=person_data[0], age=person_data[2],
      phone=person_data[3], location=person_data[3])

# instead #

  make_person(*person_data)

is generally unreasonable.  Remember, any person who actually prefers to 
write the longer forms is free to do so.

> Since we're all consenting adults,

That is the basis for my objection.  Most of the 'reasons' given for 
imposing the longer forms above have been about *not* treating 
function-calling programmers as fellow consenting adults, or rather, about 
treating them as non-adults.

One exception is the claim that in the alpha phase of a library project, 
the developer might be willing to freeze parameter names before freezing 
parameter positions.  But this should be rare, temporary, and might be 
dealt with as well by the common procedure of stating that function 
signatures (APIs) are subject to change, while indicating which aspect are 
considered most stable or unstable.

>  we should have the tools to make our judgements easy to apply.

The discussion is about a tool to make a very disputable judgment easier to 
impose on others

> Since it requires specific action to make the constraint (insertion of 
> the "*"
> marker), there doesn't appear to be any real issue here.

I do not see the logic of this statement.  I could just as well claim that 
it is constraints that require action, and which are therefore, in a sense, 
optional, that are disputable issues.

Terry Jan Reedy





More information about the Python-Dev mailing list