[Python-ideas] Keyword only argument on function call
Anders Hovmöller
boxed at killingar.net
Thu Sep 6 22:30:35 EDT 2018
On Thursday, September 6, 2018 at 4:13:45 PM UTC+2, David Mertz wrote:
>
> 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").
>
Pythons normal arguments already gives people an option to write something
else "because it's shorter" though: just use positional style. So your
example is a bit dishonest because it would be:
bank_transaction(currencies[record.country],
record.amount,
record.id)
...in many many or even most code bases.
And I would urge you to try out my analysis tool on some large code base
you have access to. I do have numbers to back up my claims. I don't have
numbers on all the places where the names don't align but would be *better*
if they did align though, because that's a huge manual task, but I think
it's pretty obvious these places exists.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20180906/b8331bdd/attachment.html>
More information about the Python-ideas
mailing list