我知道这个错误信息已经被讨论了很多,但我还没有发现下面的解释:UnboundLocalError:INT VS名单
def random2(seed):
x = seed
def update():
x = (x * 16807) % 2147483647
return x
return update
r = random2(17283945)
print(r())
这并不因为变量的范围工作x似乎通过返回函数[UnboundLocalError]而丢失。好。但现在我发现,这是绝对没有问题
def random(seed):
x = [seed]
def update():
x.append((x.pop() * 16807) % 2147483647)
return x[0]
return update
r = random(17283945)
print(r()) #580971270
print(r()) #1923475628
print(r()) #1783541505
我有点困惑为什么,在这种情况下,x的范围仍然有效。这似乎与(im)可变性有关,但这对我仍然没有多大意义。
非常感谢。
非常感谢这个答案!现在情况正在变得更加清晰...... – ainu 2013-03-10 10:57:21