我创建了一个函数,该函数返回由变量指定的值。例如:
我需要将此函数作为函数对象来创建另一个对象。
这个没问题。但如果我想创建几个不同的分布对象(具有不同函数 f 的意义在于 y 变化),该怎么办?比如:
然后所有的分布式对象都只返回最后一个指定的值 y。也就是说,
问题显然是函数f仅在调用时访问变量,而不是一次性访问。有什么解决办法吗?我最终想要的是:一个只有一个变量(x,在这种情况下它没有做任何事情,但在其他情况下需要),返回创建分布时y的值。因此,原则上我希望在初始化分布时对给定的函数进行深拷贝,这意味着它不再受任何变量更改的影响。这是否可能?
y = 1.
def f(x):
return y
我需要将此函数作为函数对象来创建另一个对象。
dist = dist.distribution(f, other_variables)
这个没问题。但如果我想创建几个不同的分布对象(具有不同函数 f 的意义在于 y 变化),该怎么办?比如:
dist = dist.distribution(f, other_variables)
y = 2.
dist2 = dist.distribution(f, other_variables)
然后所有的分布式对象都只返回最后一个指定的值 y。也就是说,
dist.f()(1.)
>>>> 2.
dist2.f()(1.)
>>>> 2.
与预期不同
dist.f()(1.)
>>>> 12.
dist2.f()(1.)
>>>> 2.
问题显然是函数f仅在调用时访问变量,而不是一次性访问。有什么解决办法吗?我最终想要的是:一个只有一个变量(x,在这种情况下它没有做任何事情,但在其他情况下需要),返回创建分布时y的值。因此,原则上我希望在初始化分布时对给定的函数进行深拷贝,这意味着它不再受任何变量更改的影响。这是否可能?