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