Discuss / Python / python的lamdba函數

python的lamdba函數

Topic source
def _not_divisible(n):
    return lambda x: x % n > 0

請問這裡的x是如何被賦值的?

苏生不语_

#2 Created at ... [Delete] [Delete and Lock User]
it = filter(_not_divisible(n), it) # 构造新序列
_not_divisible 返回一个匿名函数,it的每个元素作为x

 return lambada x 这行代码很关键, 当相当于把程序的调用关系翻转了。 你可以这样想象:

1. 把 lambada 当成是主函数(入口),它需要参数 x

2. lambada 在接收x 并进行计算时, 它调用了_not_divisible这个函数,而它需要参数 n

所以filter(_not_divisible(n), it) 这个函数在执行时, 实际上可以理解为是

filter(lambada(_not_divisible(n)),it)

这样 it 的值会传递给 lambada 进行计算。 也就是你问的 x 如何赋值了。

当然以上举例中的写法是不对的,只是便于整理思路。正确的写法是:

filter(lambda x: x % n >0, it)


  • 1

Reply