[Python-ideas] Keyword only argument on function call

David Mertz mertz at gnosis.cx
Thu Sep 6 10:12:26 EDT 2018


Steven's point is the same as my impression. It's not terribly uncommon in
code I write or read to use the same name for a formal parameter (whether
keyword or positional) in the calling scope.  But it's also far from
universal.  Almost all the time where it's not the case, it's for a very
good reason.

Functions by their nature are *generic* in some sense.  That is, they allow
themselves to be called from many other places.  Each of those places has
its own semantic context where different names are relevant to readers of
the code in that other place.  As a rule, the names used in function
parameters are less specific or descriptive because they have to be neutral
about that calling context.  So e.g. a toy example:

for record in ledger:
    if record.amount > 0:
        bank_transaction(currency=currencies[record.country],
                         deposit=record.amount,
                         account_number=record.id)

Once in a while the names in the two scopes align, but it would be code
obfuscation to *force* them to do so (either by actual requirement or
because "it's shorter").

On Thu, Sep 6, 2018 at 9:11 AM Steven D'Aprano <steve at pearwood.info> wrote:

> > I have a working implementation for a new syntax which would make
> > using keyword arguments a lot nicer. Wouldn't it be awesome if instead
> >       foo(a=a, b=b, c=c, d=3, e=e)
> > we could just write:
> >       foo(*, a, b, c, d=3, e)
> You say that as if consistent naming is *in and of itself* a good thing,
> merely because it is consistent.
> I'm in favour of consistent naming when it helps the code, when the
> names are clear and relevant. But why should I feel bad about failing to
> use the same names as the functions I call?


-- 
Keeping medicines from the bloodstreams of the sick; food
from the bellies of the hungry; books from the hands of the
uneducated; technology from the underdeveloped; and putting
advocates of freedom in prisons.  Intellectual property is
to the 21st century what the slave trade was to the 16th.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20180906/4c65c8c7/attachment-0001.html>


More information about the Python-ideas mailing list