2009-04-20 61 views
9

您可以详细说明Python中“块”(在Ruby意义上)的当前状态吗?python中的代码块

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

我迄今了解lambda的事情;它只是一条线,但也许它接近。那么在这种情况下,“装饰者”和yield呢?

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

可以链接关于这个问题的解释这个东西的Python,也比较其他语言,可能是人谁愿意扩大基本的Python知识有趣的有趣的文章。

请随意将此问题纠正为适当的英语和适当的IT语言。

[编辑]我接受这在只有2个小时完全改变了我的编码风格的答案。我不知道这很简单。我也很欣赏你给的链接,非常感谢你。[/编辑]

+0

我应该让它成为社区wiki(cw)吗?我不太明白cw的含义。 – user89021 2009-04-20 09:15:18

+0

社区wiki意味着编辑的门槛要低得多(750 rep vs 2000),没有人会为问题或答案赢得回应。它通常用于常见问题或“有趣”的问题。这只是一个正常的问题,所以不要这样做。 – 2009-04-20 22:08:26

回答

9

功能在Python

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

a = add   # bind 
b = a(34, 1)  # call 

一流的成员,因此您可以绕过所有你想要的功能。你可以用python中的任何可调用对象来做同样的事情。

2

lambda是最接近相当于一个Ruby块,并且限制于一行is intentional。它通常认为多匿名功能(块,在红宝石)是通常比具有名称某处定义函数和顺便指出,如在SilentGhost's answer所示的可读性。

0

def相当于只绑定功能的赋值语句对象到对象引用变量。

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