我知道這個錯誤信息已經被討論了很多,但我還沒有發現下面的解釋: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