一个 Python 新手问题,为什么这个语法是无效的:
谢谢您的见解。
lambda: pass
,而这个:def f(): pass
是正确的?谢谢您的见解。
lambda: pass
,而这个:def f(): pass
是正确的?lambda函数只能包含表达式 - 基本上是指那些可以出现在赋值语句右侧的东西。 pass
不是一个表达式 - 它不会被求值为一个值,a = pass
永远都是不合法的。
另一种思考方法是,因为lambda函数会隐式返回它们的主体的结果,所以 lambda: pass
实际上等价于:
def f():
return pass
这没有意义。如果你真的需要一个no-op lambda,那么可以使用lambda: None
代替。
这是一个错误,因为在冒号后面你必须放置返回值,所以:
lambda: pass
等于:
def f():
return pass
这确实毫无意义,而且会产生一个 SyntaxError
。
没有 return
语句的函数会返回 None
值。您可以从在 OP 中定义的简单 pass
函数中看到这一点:
>>> def f():
... pass
...
>>> print f()
None
如果你正在寻找一个与这个“no-op”函数等价的lambda函数,那么可以使用以下代码:
lambda: None
例如:>>> f = lambda: None
>>> print f()
None
lambda: None
仍然返回一个值,那么有没有办法定义一个匿名函数,使其的行为与def f(): pass
完全相同呢? - Rezreturn
语句,它们会返回None
。 - lvc