鉴于表达式f = lambda x: x+x
,可以使用单行表达式编辑f
的功能,以便实现以下结果:
f(7) = 14
`the expression subtracts one from the return value of f`
f(7) = 13
答案 0 :(得分:2)
您可以重新分配f
,但是,只需要在一行中执行此操作将非常棘手,因为您需要保留对旧lambda
的引用:
old_f = f
f = lambda x: old_f(x) - 1
您可以使用闭包:
f = (lambda old_f: (lambda x: old_f(x) - 1))(f)
答案 1 :(得分:1)
您可以使用默认参数值通过闭包保留前一个函数,而不需要引入任何新变量:
f = lambda x: x*2
print f(7) # --> 14
f = (lambda prev_f=f: (lambda x: prev_f(x) - 1))(f)
print f(7) # --> 13