"Guido van Rossum" <guido at python.org> wrote in message news:ca471dc20605010728g2742bd01m4b4b284c15eabb18 at mail.gmail.com... > 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
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4