python lambda和常规函数之间一定有区别吗?

时间:2018-10-30 14:39:15

标签: python lambda

我尝试了2个片段来找出python lambda和常规函数之间的区别。

这能达到预期的效果。

b = range(6)
def greater_than2(b):
    if b > 2:
        return b

print(list(filter(lambda x: x > 2, b)))
print(list(filter(greater_than2, b)))

两个都给出[3,4,5]。

但是与此相关的是

b = range(6)

def less_than2(b):
    if b < 2:
        return b

print(list(filter(lambda x: x < 2, b)))
print(list(filter(less_than2, b)))

我得到以下输出

[0, 1]
[1]

那么,lambda和less_than2函数之间有什么区别?

1 个答案:

答案 0 :(得分:3)

您的函数不可比,greater_than2需要返回一个布尔值:

def greater_than2(b):
    return b > 2

上面定义的函数在True时将返回b > 2,在False时将返回b <= 2

您的常规函数​​返回b。让我们考虑第二个示例中发生差异的情况:

b = 0less_than2返回0
b = 1less_than2返回1
b = 2less_than2返回None
...
b = 5less_than2返回None

请注意,如果不满足您的if条件,则永远不会满足return语句,因此您的函数将返回None。这些返回值中唯一的“ Truthy”值是1,因为bool(0)bool(None)的值为False