2016-09-23 65 views
0

下面这段代码提供了错误,同时呼吁嵌套lambda表达式,类型错误:不支持的操作数类型(S)为+:“诠释”和“功能”

a = lambda x : x +(lambda y : y * 30) 

--call 
a(1) 

Traceback (most recent call last): 
    File "<pyshell#334>", line 1, in <module> 
    a(1) 
    File "<pyshell#330>", line 1, in <lambda> 
    a = lambda x : x +(lambda y : y * 30) 
TypeError: unsupported operand type(s) for +: 'int' and 'function' 

有没有办法实现这个使用嵌套拉姆达

+0

你想在地球上实现什么?你期待什么输出?所写的代码是无稽之谈,所以你需要指出预期的行为;我们无法猜测这里的编译器。 – ShadowRanger

+0

所以你想做'(x,y) - > x +(y * 30)'? – Li357

+0

不能做你想做的事情的代码往往是解释你想做什么的极其糟糕的方法。我希望我能够正确地猜测你的意图。 – tripleee

回答

1

有点折磨,像这样?

a = lambda x: 1 + (lambda y: y*30)(x) 

如果你创建和命名lambda ylambda x,它有点清洁,但我猜你会说这就是作弊。

f = lambda y: y*30 
a = lambda x: x + f(x) 
+0

或者,如果他们想用两个参数调用,就像这样:'a = lambda x,y:x +(lambda y:y * 30)(y)'。然后调用像'a(x,y)'? – Li357

+0

OP的例子显示只传递一个参数,所以我想这也会传递给'lambda y',但我们显然都在猜测。感谢你的榜样;我非常感谢这个简化了我的工作。 – tripleee

相关问题