与Ruby相比,Python的限制:lambda

前端之家收集整理的这篇文章主要介绍了与Ruby相比,Python的限制:lambda前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在浏览WikiVS的一些页面,我引用了:

because lambdas in Python are restricted to expressions and cannot
contain statements

我想知道这个限制将是一个很好的例子(或更多),最好是与Ruby语言相比较.

感谢您的回答,评论和反馈!

解决方法

我不认为你真的在问lambdas,而是内联函数.

这真的是Python严重烦人的限制之一:你无法定义一个函数(一个真正的函数,而不仅仅是一个表达式)内联;你必须给它一个名字.这是非常令人沮丧的,因为其他所有现代脚本语言都是这样做的,并且必须将函数移到线外非常痛苦.这也令人沮丧,因为我觉得Python字节码可以代表这一点 – 这只是语言语法不能.

使用Javascript

responses = {
        "resp1": {
                "start": function() { ...  },"stop": function() { ... },},"resp2": {
                "start": function() { ...  },...
}
responses["resp1"]["start"]();

LUA:

responses = {
        resp1 = {
                start = function() ...  end;
                end = function() ...  end;
        };
        ...
}
responses.resp1.start();

ruby:

responses = {
    "resp1" => {
        "start" => lambda { },"stop" => lambda { },}
responses["resp1"]["start"].call

Python:

def resp1_start():
    pass
def resp1_stop():
    pass
responses = {
    "resp1": {
        "start": resp1_start,"stop": resp1_stop,}
responses["resp1"]["start"]()

请注意,JavaScript和Lua没有lambdas:它们没有理由存在,因为内联函数以更加自然和通用的方式覆盖它们.

我可能会认为这是最令人烦恼的日常Python限制.

原文链接:https://www.f2er.com/ruby/267562.html

猜你在找的Ruby相关文章