在Python中,如何编写一个多行的lambda函数?我尝试过。
d = lambda x: if x:
return 1
else
return 2
但是我遇到了错误...
使用def
代替。
def d(x):
if x:
return 1
else:
return 2
所有Python函数都是一级对象(它们可以作为参数传递),lambda
只是一种方便的方式来创建短函数。通常,如果函数变得不止一行简单代码,则最好使用正常的函数定义。
实际上,即使您将其分配给名称,如果超过一行,请始终使用def
而不是lambda
。 lambda
仅在定义短key
函数时才是一个好主意,例如用于sorted()
,因为它们可以直接嵌入到函数调用中。
请注意,对于您的情况,三元运算符会完成任务(lambda x:1 if x else 2
),但我假设这是一个简化的情况。
(作为代码高尔夫笔记,这也可以通过lambda x:bool(x)+1
用更少的代码完成-当然,那非常难读并且是个坏主意。)
def
不能与逻辑代码放在一起,必须单独存在。这会打乱读取代码的流程。但这是我们在Python中所面对的。 - WestCoastProjectslambda
表达式在Python中仅限于一个表达式, 不允许使用语句。
当保持上述约束条件时,您可以使用反斜杠字符编写多行表达式:
>>> fn = lambda x: 1 if x \
else 2
>>> fn(True)
>>> 1
>>> fn(False)
>>> 2
这是你尝试做的正确版本:
d = lambda x: 1 if x else 2
但我不确定你为什么要这样做。
def
语句。 - JBernardo