【发布时间】:2017-01-29 01:55:31
【问题描述】:
我刚从 Matlab 切换到 Python,我想使用 lambda 函数将具有多个参数的函数 f1(x,y) 映射到一个参数函数 f2(x) 以进行优化。
我希望当我映射函数f2(x) <- f1(x,y=y1) 时,无论y1 发生什么变化,y 都将保持不变,在 Matlab 中默认情况下这是正确的,但如果我在 Python 中尝试,它会像以下示例一样不断变化
>>> def f1(x,y):
>>> return (x+y)
>>> y1 = 2
>>> f2 = lambda x: f1(x,y1)
>>> f2(1)
3
我希望f2(1) 保持3 即使我更改y1,但是如果我更改y1,整个f1(1) 也会更改如下
>>> y1 = 5
>>> f2(1)
6
我想知道当我声明f2 = lambda x: f1(x,y1) 时,f1 会采用当时y1 的值并将其修复为f2。之所以这样,是因为我想为不同的场景动态创建不同的函数,然后将它们全部加起来。
我还是 Python 新手,请帮助,非常感谢。
【问题讨论】: