Python lambda表达式

时间:2013-11-27 13:46:22

标签: python lambda

请考虑以下事项:

>>> a=2
>>> f=lambda x: x**a
>>> f(3)
9
>>> a=4
>>> f(3)
81

我希望fa更改时不要更改。最好的方法是什么?

2 个答案:

答案 0 :(得分:13)

在定义a

时,您需要将lambda绑定到关键字参数
f = lambda x, a=a: x**a

现在a是一个本地(绑定为参数)而不是全局名称。

演示:

>>> a = 2
>>> f = lambda x, a=a: x**a
>>> f(3)
9
>>> a = 4
>>> f(3)
9

答案 1 :(得分:6)

另一个选择是创建一个闭包:

>>> a=2
>>> f = (lambda a: lambda x: x**a)(a)
>>> f(3)
9
>>> a=4
>>> f(3)
9

当您有多个参数时,这尤其有用:

 f = (lambda a, b, c: lambda x: a + b * c - x)(a, b, c)

甚至

 f = (lambda a, b, c, **rest: lambda x: a + b * c - x)(**locals())