【问题标题】:Blocks of code in PythonPython中的代码块
【发布时间】:2010-10-20 12:45:55
【问题描述】:

您能否详细说明 Python 中“块”(在 Ruby 意义上)的当前状态?

Python 中存在哪些语言结构?它们与其他语言(如 Ruby、Smalltalk、[插入更多])相比如何?还是 Python 缺少这样的结构?

到目前为止,我已经了解了lambda 的事情;它只有一条线,但也许很接近。在这种情况下,“装饰者”和yield 呢?

我还在一些项目中使用旧的 Python 版本。在哪个 Python 版本(2.5、2.6 等)中引入或计划在未来版本中引入哪些构造?

您能否链接有关该主题的有趣文章,这些文章解释了 Python 的这些内容并与其他语言进行了比较,并且对于想要扩展基本 Python 知识的人来说可能很有趣?

【问题讨论】:

    标签: python ruby lambda


    【解决方案1】:

    函数是 Python 中的一等成员:

    def add(x, y):
        return x + y
    
    a = add          # Bind
    b = a(34, 1)     # Call
    

    所以你可以传递任何你想要的函数。您可以对 Python 中的任何可调用对象执行相同操作。

    【讨论】:

    • 这太酷了,谢谢,请阅读我的问题中的编辑
    【解决方案2】:

    lambda 最接近 Ruby 块,并且限制为一行 is intentional。人们通常认为多行匿名函数(Ruby 中的块)通常比在某处使用名称定义函数并传递它的可读性差,如 SilentGhost's answer 所示。

    【讨论】:

      【解决方案3】:

      与其他语言相比,关于 comp.lang.python 的讨论很好:

      【讨论】:

        【解决方案4】:

        def 相当于一个赋值语句,它只将函数对象绑定到对象引用变量。

        然后可以使用对象引用变量来调用函数对象来执行。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-09-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多