2017-03-02 14:23 GMT+01:00 Steven D'Aprano email@example.com:
Replace "replace(self, old, new, count=-1, /)" with "replace(self, old, new[, count=-1])" (or maybe even not document the default value?).
That isn't right. It would have to be:
replace([self, old, new, count=-1])
if all of the arguments are positional-only. But that makes it look like they are all optional! A very strong -1 to this.
Python 3.5 help (docstring) uses "S.replace(old, new[, count])".
S.replace(old, new[, count], /)
which shows that all three arguments are positional only, but only count is optional.
Oh, I didn't notice the weird count parameter: positional-only, but no default value?
I would prefer to avoid weird parameters and use a syntax which can be written in Python, like:
def replace(self, old, new, /, count=-1): ...
When a function has more than 3 parameters, I like the ability to pass arguments by keyword for readability:
"xxx".replace("x", "y", count=2)
It's more explicit than:
"xxx".replace("x", "y", 2)
By the way, I proposed once to convert open() parameters after filename and mode to keyword-only arguments, but Guido didn't want to break the backward compatibility ;-)
open(filename, mode, *, buffering=-1, ...)