【发布时间】:2012-08-10 19:19:51
【问题描述】:
在 SML(我在 Python 之前学习的一种函数式编程语言)中,我可以执行以下操作:
val x = 3;
fun f() = x;
f();
>>> 3
val x = 7;
f();
>>> 3
然而,在 Python 中,第一次调用会给出 3,第二次调用会给出 7。
x = 3
def f(): return x
f()
>>> 3
x = 7
f()
>>> 7
如何将变量的值绑定到 Python 中的函数?
【问题讨论】:
-
另一个问题,你为什么需要这个?
-
@tuxtimo -- 这实际上是非常重要的。我一直使用这种东西将回调绑定到循环内的 GUI 小部件。
-
@tuxtimo 与 mcgilson 所说的原因几乎相同。我需要这样的东西来生成引用在
for循环中迭代的对象的函数列表。 -
不同之处在于Python中的所有变量都是可变的(SML
refs),所以x = 7更像是SML在ML中的x := 7而不是val x = 7。 (我猜第一个x = 3就像val x = ref 3。)