我知道这个错误消息已经被讨论了很多,但我还没有找到对以下内容的解释:
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)可变性有关,但这对我来说仍然没有多大意义。
非常感谢。