This is extremely heavyweight syntax for something I like to use as a lightweight construct. If I wanted a function, I would make something a function.
x = lambda y: <code goes here>
def x(y): <code goes here>
What's so heavyweight? A new line and a tab?
IMO lambdas are useful because they reduce mental overhead by allowing the developer not to give names to trivial functions [1].
Compare these two equivalent pieces of code:
youngest_person = min(people, key=lambda x: x.age)
def get_age(x):
return x.age
youngest_person = min(people, key=get_age)
This may not seem like a huge difference, but using lambdas scales better.[1] Incidentally, this is the same reason why I don't miss multi-line lambdas (in Python): multi-line functions are seldom trivial.
Yeah in the context of multi line functions the overhead is
A new line A tab A return
This does not sound heavyweight to me (in that context). In the context of a single line function I see the utility of lambdas.
I've always found Python lambdas to be uncanny, weird and error prone. It's kinda syntactic sugar for expression-only defs with counterintuitive scope rules. I would recommend just not using them and fall back to named functions. It's just one extra line and that way you get to name it, which is always a nice thing.