このエラー メッセージについてはすでに多くの議論がなされていることは知っていますが、次の説明は見つかりませんでした。
def random2(seed):
x = seed
def update():
x = ( x * 16807 ) % 2147483647
return x
return update
r = random2(17283945)
print(r())
関数 [UnboundLocalError] を返すと、変数 x のスコープが失われるように見えるため、これは機能しません。Ok。しかし、今ではまったく問題がないことがわかりました
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 のスコープが有効なままである理由が少しわかりません。(不) 可変性と関係があるようですが、これはまだ私にはあまり意味がありません。
どうもありがとう。