首页 > 解决方案 > 如何在另一个 lambda 中绑定一个 lambda?

问题描述

我想根据某些参数构建过滤器,通过将 python lambda 链接在一起,如下所示:

filter_even = True
my_filter = lambda x: x # Base filter
if filter_even:
    my_filter = lambda x: my_filter(x) and x % 2 == 0
list(filter(my_filter, [1,2,3,4]))

但是my_filter没有绑定在 lambda 中,而是对新 lambda 的引用,所以我得到了

RecursionError: maximum recursion depth exceeded

将旧 lambda 绑定到新 lambda 中的最佳方法是什么?我认为 lambda 的行为类似于变量,但在这种情况下,它似乎通过名称而不是变量的内容来引用旧的 lambda(之后被新的 lambda 替换)

标签: pythonlambda

解决方案


推荐阅读