[Python-3000] PEP 3124 - more commentary

Nick Coghlan ncoghlan at gmail.com
Tue May 15 11:28:54 CEST 2007


Guido van Rossum wrote:
> On 5/14/07, Phillip J. Eby <pje at telecommunity.com> wrote:
>> More importantly, it seems to go against the grain of at least my
>> mental concept of Python call signatures, in which arguments are
>> inherently *named* (and can be passed using explicit names), with
>> only rare exceptions like range().  In contrast, the languages that
>> have this sort of positional thing only allow arguments to be
>> specified by position, IIRC.  That's what makes me uncomfortable with it.
> 
> Well, in *my* metnal model the argument names are just as often
> irrelevant as they are useful. I'd be taken aback if I saw this in
> someone's code: open(filename="/etc/passwd", mode="r"). Perhaps it's
> too bad that Python cannot express the notion of "these parameters are
> positional-only" except very clumsily.

The idea of positional-only arguments came up during the PEP 3102 
discussions. I believe the proposal was to allow a tuple of annotated 
names instead of a single name for the varargs parameter:

@overloadable
def range(*(start:int, stop:int, step:int)):
     ...  # implement xrange

@range.overload
def range(*(stop:int,)):
     return range(0, x, 1)

@range.overload
def range(*(start:int, stop:int)):
     return range(x, y, 1)

PJE's approach (using *args in the base signature, but allowing 
overloads to omit it) is probably cleaner, though.

Cheers,
Nick.

-- 
Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia
---------------------------------------------------------------
             http://www.boredomandlaziness.org


More information about the Python-3000 mailing list