9
考虑以下几点:Python的lambda表达式
>>> a=2
>>> f=lambda x: x**a
>>> f(3)
9
>>> a=4
>>> f(3)
81
我想为f
时a
改变不改变。什么是最好的方法来做到这一点?
考虑以下几点:Python的lambda表达式
>>> a=2
>>> f=lambda x: x**a
>>> f(3)
9
>>> a=4
>>> f(3)
81
我想为f
时a
改变不改变。什么是最好的方法来做到这一点?
另一种选择是创建一个封闭:
>>> 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())
您需要绑定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