[Python-ideas] keyword arguments everywhere (stdlib) - issue8706

Simon Sapin simon.sapin at kozea.fr
Sat Mar 3 16:47:21 CET 2012


Le 03/03/2012 16:20, Ron Adam a écrit :
> It seems to me that sometimes the writer of functions wish to have more
> control of how the function is called, but I think it is better that the
> user of a function can select the calling form that perhaps matches the
> data and/or style they are using more closely.

I agree with that, but it can still make sense to have positional-only 
arguments. For example, we want d.update(self=4) to update the 'self' 
key on any Mapping, so the default implementation update on the ABC has 
to accept *args, **kwargs and have some code to extract self:

http://hg.python.org/cpython/file/e67b3a9bd2dc/Lib/collections/abc.py#l511

Without this "hack", passing self=4 would give TypeError: got multiple 
values for keyword argument 'self'.

It would be so much nicer to be able to declare self and other 
positional-only in "def update(self, other=(), **kwargs):"

Regards,
-- 
Simon Sapin



More information about the Python-ideas mailing list