2016-08-18 31 views
-3

我只是通過這樣的:如何爲分配創建lambda表達式?

def ___(x): 
    x.a=0 
    return x 

def ___(x): 
    x.a=0 

成一個函數。如何使它發生?

+5

你如何讓事情發生到底?我不知道你真的想在這裏實現什麼...... –

+1

如果這就是你所做的不會更好,只是做它?而不是在一些方法中隱藏屬性的設置(也許你的例子過於簡化,你不僅僅是設置一個屬性) –

回答

3

lambda只能是一個表達式,並且賦值不是Python中的表達式。幸運的是,還有另一種在Python中設置屬性的方法:函數setattr()。所以,你可以寫:

lambda x: setattr(x, "a", 0) 

這不是很好的Python,雖然,因爲它使代碼不太清楚只是這樣它可以在拉姆達使用。我只是使用一個命名函數。

+0

我只是做任務而不是調用一個函數(任何類型)來做它。 – martineau

+0

推測它被傳遞給其他函數作爲回調函數。否則,我同意。 – kindall

+0

當然,但這裏的環境非常薄弱......與某些類型的煎餅不同。 '';-) – martineau

0
x.a=0 

上面的線是statement,和λ函數不能包含語句(僅expressions)。

但是,您可以將普通函數作爲參數傳遞給其他函數,沒有問題!
所以:只需使用def