"Guido van Rossum" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]
> A function/method could have one argument that is obviously needed and
> a whole slew of options that few people care about. For most people,
> the signature they know is foo(arg). It would be nice if all the
> options were required to be written as keyword arguments, so the
> reader will not have to guess what foo(arg, True) means.
Ok, this stimulates an old memory of written IBM JCL statements something
like
DD FILENAME,,,,,2,,HOP
where you had to carefully count commas to correctly write and later read
which defaulted options were being overridden.
dd(filename, unit=2, meth = 'hop') is much nicer.
So it seems to me now that '*, name1 = def1, name2=def2, ...' in the
signature is a really a substitute for and usually an improvement upon
(easier to write, read, and programmaticly extract) '**names' in the
signature followed by
name1 = names.get('name1', def1)
name2 = names.get('name2', def2)
...
(with the semantic difference being when defs are calculated)
(But I still don't quite see why one would require that args for required,
non-defaulted param be passed by name instead of position ;-).
As something of an aside, the use of 'keyword' to describe arguments passed
by name instead of position conflicts with and even contradicts the Ref Man
definition of keyword as an identifier, with a reserved use, that cannot be
used as a normal identifier. The parameter names used to pass an argument
by name are normal identifiers and cannot be keywords in the other sense of
the word. (Yes, I understand that this is usual CS usage, but Python docs
can be more careful.) So I would like to see the name of this PEP changed
to 'Name-only arguments'
Terry Jan Reedy
_______________________________________________
Python-Dev mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe:
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com