我认为您并不是真正在问lambda,而是 内联函数 。
这确实是Python严重令人讨厌的限制之一:您不能内联定义一个函数(一个实函数,而不仅仅是一个表达式);您必须给它起个名字。这非常令人沮丧,因为其他所有现代脚本语言都可以做到这一点,而不得不离线移动函数通常会非常痛苦。这也令人沮丧,因为我感到Python字节码可以轻松地表示这一点-
只是语言语法无法做到。
Javascript:
responses = { "resp1": { "start": function() { ... }, "stop": function() { ... }, }, "resp2": { "start": function() { ... }, "stop": function() { ... }, }, ...}responses["resp1"]["start"]();卢阿:
responses = { resp1 = { start = function() ... end; end = function() ... end; }; ...}responses.resp1.start();红宝石:
responses = { "resp1" => { "start" => lambda { }, "stop" => lambda { }, },}responses["resp1"]["start"].call蟒蛇:
def resp1_start(): passdef resp1_stop(): passresponses = { "resp1": { "start": resp1_start, "stop": resp1_stop, },}responses["resp1"]["start"]()请注意,Javascript和Lua没有lambda:它们没有理由存在,因为内联函数以更加自然和通用的方式覆盖了它们。
我可能会将此视为最烦人的Python日常限制。



