"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 Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com