Why python doesn't use syntax like function(, , x) for default parameters?

Antoon Pardon apardon at forel.vub.ac.be
Mon Mar 13 14:04:06 CET 2006


Op 2006-03-10, Terry Reedy schreef <tjreedy at udel.edu>:
>
> "Antoon Pardon" <apardon at forel.vub.ac.be> wrote in message 
> news:slrne1372v.mt4.apardon at rcpc42.vub.ac.be...
>> but nobody seems to have
>> a problem with range(n) where n suddenly is the second parameter and
>> we use the default for the first.
>
> Actually, I consider the unique calling pattern for x/range to be something 
> of a wart.  Learning this inconsistency was at least a minor problem.  It 
> is a rather extreme example of typing laziness beats purity.
>
> Given that enumerate() eliminate many uses of range(), it might be worth 
> considering requiring the start param.  range(0,n) only takes two more 
> keystrokes.  Better maybe to shorten range to rng to get them back ;-)

Take the split method of strings. Personnaly I would prefer to be able
to write:

  s.split(,3)

Instead of having to write

  s.split(None,3)


The reason is that None is IMO an implemenation detail here. Also
the alternative

  s,split(maxsplit=3)

doesn't work in this case.


What may be an option for the future is a Default Object. So that
if you have.

   def f(x=0,y=0):
      ...

then

   f(Default, 5)


would be equivallent to

   f(0,5)

-- 
Antoon Pardon



More information about the Python-list mailing list