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.
_______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/