Python中的代码块

时间:2009-04-20 09:14:24

标签: python ruby lambda

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

Python中存在哪些语言结构?他们如何与其他语言(如Ruby,Smalltalk,[插入更多])进行比较?或者Python缺乏这样的结构?

到目前为止,我已经理解了lambda的事情;它只是单行,但也许它接近。在这种情况下,“装饰者”和yield怎么样?

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

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

4 个答案:

答案 0 :(得分:10)

函数是Python中的第一类成员:

def add(x, y):
    return x + y

a = add          # Bind
b = a(34, 1)     # Call

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

答案 1 :(得分:3)

lambda是与Ruby块最接近的等价物,以及对一行is intentional的限制。通常认为多行匿名函数(在Ruby中的块)通常可读性低于使用名称定义函数并传递它的可读性,如SilentGhost's answer中所示。

答案 2 :(得分:3)

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

答案 3 :(得分:0)

def等同于赋值语句,它只将函数对象绑定到对象引用变量。

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