2017-03-02 14:23 GMT+01:00 Steven D'Aprano <st...@pearwood.info>: >> 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])". > > Should be: > > 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, ...) Victor _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/