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
.您可以从pass
OP中定义的简单函数中看到这一点:
>>> 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)
归档时间: |
|
查看次数: |
10841 次 |
最近记录: |