Python:lambda形式的pass语句
一个Python新手的问题,为什么这个语法无效: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
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函数都返回一个值;如果它们从末端脱落,或到达裸露的返回
,则返回无
。