没有 lambda 的单行 python 闭包可能吗?



是否可以在不使用lambda的情况下只在一行中在Python中编写以下闭包(例如,作为可以传递给map()的表达式(?

from operator import add, eq
def sum_equal_to_target(target):
def f(pair):
return eq(target, add(*pair))
return f
sum_equal_to_target = lambda pair: eq(target, add(*pair))
sum_equal_to_target = lambda pair: target == (pair[0] + pair[1))

这是可能的(通过使用exec(,但不建议 - 有很多缺点,包括失去可读性:

from operator import add, eq
exec('def sum_equal_to_target(target):n    def f(pair):n        return eq(target, add(*pair))n    return f')
print(list(map(sum_equal_to_target(7), [(1,2),(3,4),(5,6)])))
# [False, True, False]

请注意,lambda函数是Python制作(简单(单行的方式 匿名函数。AFAICS,要在没有lambda的情况下做到这一点,需要像exec这样的黑客。

最新更新