Python:lambda形式的pass语句

Python:lambda形式的pass语句,python,lambda,anonymous-function,Python,Lambda,Anonymous Function,一个Python新手的问题,为什么这个语法无效:lambda:pass,而这个:def():pass是正确的 感谢您的见解。这是一个错误,因为在冒号之后必须输入返回值,因此: lambda: pass 等于: def f(): return pass 这确实毫无意义,而且还会产生一个语法错误。lambdas只能包含表达式-基本上,可以出现在赋值语句的右侧pass不是一个表达式-它的计算结果不是一个值,a=pass永远不合法 另一种思考方式是,因为lambda隐式返回其主体的结果,lam

一个Python新手的问题,为什么这个语法无效:
lambda:pass
,而这个:
def():pass
是正确的


感谢您的见解。

这是一个错误,因为在冒号之后必须输入返回值,因此:

lambda: pass
等于:

def f():
   return pass
这确实毫无意义,而且还会产生一个语法错误。

lambdas只能包含表达式-基本上,可以出现在赋值语句的右侧
pass
不是一个表达式-它的计算结果不是一个值,
a=pass
永远不合法

另一种思考方式是,因为lambda隐式返回其主体的结果,
lambda:pass
实际上相当于:

def f():
    return pass

这没有道理。如果出于某种原因确实需要无操作lambda,请改为
lambda:None

没有
return
语句的函数的返回值为
None
。您可以从OP中定义的简单
pass
函数中看到这一点:

>>> def f():
...     pass
... 
>>> print f()
None
如果您正在寻找与此“无操作”函数等效的lambda函数,则可以使用:

lambda: None
例如:

>>> f = lambda: None
>>> print f()
None

这很有道理,谢谢!但是,既然
lambda:None
仍然返回一个值,我有没有办法定义一个行为与
def():pass
?@Rez完全相同的匿名函数?所有Python函数都返回一个值;如果它们从末端脱落,或到达裸露的
返回
,则返回