Even though I wasn’t around any discussions back then, I vaguely remembered reading that there was some decision made around lambdas being kept the way they are. I searched and found this old wiki page: AlternateLambdaSyntax - Python Wiki which links to an email from @guido:
After so many attempts to come up with an alternative for lambda,
perhaps we should admit defeat. I’ve not had the time to follow the
most recent rounds, but I propose that we keep lambda, so as to stop
wasting everybody’s talent and time on an impossible quest.
The rationale for wanting better lambdas (listed on the wiki) still holds today, in my opinion. This was in 2006 and many things have changed since then. Lambda expressions are quite mainstream, and as a result, well understood by many people. Python has also taken directions that were considered “unpythonic” back then.
What were the biggest roadblocks getting this over the goal line?
On the wiki page mentioned above, I see several proposals that could blend pretty well with modern Python. For example, the arrow syntax by Ka-Ping Yee:
a, b, c -> f(a) + o(b) - o(c)
x -> x * x
-> x
*a, **k -> x.bar(*a, **k)
((x=x, a=a, k=k) -> x(*a, **k) for x, a, k in funcs_and_args_list)
or perhaps, to avoid parsing difficulties with type annotations, double arrows:
a, b, c => f(a) + o(b) - o(c)
x => x * x
=> x
*a, **k => x.bar(*a, **k)
((x=x, a=a, k=k) => x(*a, **k) for x, a, k in funcs_and_args_list)