[Python-Dev] PEP 457: Syntax For Positional-Only Parameters (original) (raw)
Terry Reedy tjreedy at udel.edu
Wed Oct 9 20:25:18 CEST 2013
- Previous message: [Python-Dev] PEP 457: Syntax For Positional-Only Parameters
- Next message: [Python-Dev] PEP 457: Syntax For Positional-Only Parameters
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 10/9/2013 1:05 PM, Larry Hastings wrote:
First, if you're proposing to change the signature of range()... well, good luck. Any proposals I made like that got shot down almost immediately. I /think/ Guido said somewhere "range isn't changing. deal with it.", though I admit I don't have a reference for that handy.
I am sure that he has rejected any backward-incompatible change, as would I. Allowing keyword passing is compatible, so I would not guess about that.
Also, if you're suggesting "change the semantics of builtins to get rid of positional-only parameters",
Georg, and I agree, said most.
I've got a different example for you: the dict constructor, which /must/ accept a single optional positional-only parameter.
An optional positional-only parameter can be and sometimes is or has been denoted by [], as with dir([object]). In Python 3, [] is no longer used for normal optional params, which always have defaults. The dict signature could be (and maybe once was) given as dict([mapping-or-iterable], *kwds).
There is a definite problem, though with required positional-only params. If these are rarer than at present, then it may matter less to people the indicator is. If they think it obnoxious, they will not have to see it so often,
Unlike Georg, I think '/' is plausibly ok. You should, however, explicitly say in the PEP that it was selected not randomly but by rough analogy. Division (/) is the inverse of multiplication (*), and positional-only is sort of the 'inverse' of keyword-only. (If I am wrong, and the above is just an accident, it is at least a way to remember ;-).
Another approach would be to make parameter names that are illegal to use in calls illegal as Python names. "form follows function" or in this case, "bad form indicates no function". For instance, always put a hyphen in the displayed parameter name, as I intentionally did above. If nothing else, add a '-p' suffix. A hyphen is not legal in a name, so 'object-p', for instance, cannot possibly be used to make a call such as:
dir(object-p=int) SyntaxError: keyword can't be an expression
Note that I am talking about the doc and help results, not necessarily about the CPython C code most people never see.
-- Terry Jan Reedy
- Previous message: [Python-Dev] PEP 457: Syntax For Positional-Only Parameters
- Next message: [Python-Dev] PEP 457: Syntax For Positional-Only Parameters
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]