[Python-ideas] Thoughts on lambda expressions
Abe Dillon
abedillon at gmail.com
Wed Mar 2 15:01:29 EST 2016
I'm new here, but I know that lambda expression syntax has probably been
discussed to oblivion. I have searched previous posts without finding
anything exactly like my idea so here it is:
# instead of this
hand = sorted(cards, key=lambda card: card.suit) # sort some iterable of
cards by suit
# do this
hand = sorted(cards, key=(card.suit from card)) # sort some iterable of
cards by suit
# |<= you can stop reading here and still
have a good sense of what the code does
More generally, I think a superior syntax for lambda would be:
(<expression> from <signature>)
The reasons I believe that's a superior syntax are:
a) In the vast majority of use cases for lambda expressions the call
signature can be easily inferred (like in a key function), so moving it
after the expression tends to be more readable.
b) It doesn't use the esoteric name, 'lambda' which causes its own
readability issues.
c) It should be compatible with existing code:
try:
1/0
except Exception as e:
raise (ValueError() from e) # this is already a syntax error so
implementing the proposal won't break working code
# of this form. I'm not aware of any other
uses of the 'from' keyword that would create
# ambiguities
I'm not sure if this should actually be implemented, but I wanted to share
the idea anyway and get some feedback. In my opinion 'lambda' is one of the
less elegant pieces of Python syntax not because it's restricted to a
single expression, but because the name and syntax are both detrimental to
readability.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20160302/6717c2d4/attachment.html>
More information about the Python-ideas
mailing list