Rez*_*Rez 39 python lambda anonymous-function
一个Python新手问题,为什么这个语法无效:lambda: pass,虽然这个:def f(): pass是正确的吗?
感谢您的见解.
etu*_*rdu 40
这是一个错误,因为在冒号后你必须输入返回值,所以:
lambda: pass
Run Code Online (Sandbox Code Playgroud)
等于:
def f():
return pass
Run Code Online (Sandbox Code Playgroud)
这确实没有任何意义,也产生了一个SyntaxError.
lvc*_*lvc 40
lambdas只能包含表达式 - 基本上,它可以出现在赋值语句的右侧.pass不是表达式 - 它不会评估为某个值,a = pass也从不合法.
另一种思考方式是,因为lambdas隐含地返回了他们身体的结果,lambda: pass实际上相当于:
def f():
return pass
Run Code Online (Sandbox Code Playgroud)
这没有意义.如果由于某种原因你真的需要一个无操作的lambda,那就lambda: None改为了.
Lee*_*ton 15
没有return语句的函数的返回值是None.您可以从passOP中定义的简单函数中看到这一点:
>>> def f():
... pass
...
>>> print f()
None
Run Code Online (Sandbox Code Playgroud)
如果您正在寻找与此"无操作"功能等效的lambda函数,那么您可以使用:
lambda: None
Run Code Online (Sandbox Code Playgroud)
例如:
>>> f = lambda: None
>>> print f()
None
Run Code Online (Sandbox Code Playgroud)