2009-04-20 64 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相當於只綁定功能的賦值語句對象到對象引用變量。

然後可以使用對象引用變量來調用要執行的函數對象。