我尝试了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函数之间有什么区别?
答案 0 :(得分:3)
您的函数不可比,greater_than2
需要返回一个布尔值:
def greater_than2(b):
return b > 2
上面定义的函数在True
时将返回b > 2
,在False
时将返回b <= 2
。
您的常规函数返回b
。让我们考虑第二个示例中发生差异的情况:
b = 0
:less_than2
返回0
b = 1
:less_than2
返回1
b = 2
:less_than2
返回None
...
b = 5
:less_than2
返回None
请注意,如果不满足您的if
条件,则永远不会满足return
语句,因此您的函数将返回None
。这些返回值中唯一的“ Truthy”值是1
,因为bool(0)
和bool(None)
的值为False
。