私はpython3で次の行に沿って何かをしようとしています:
i = 1337
def g():
print(i)
i = 42
g()
しかし、次のエラーが発生します
UnboundLocalError: local variable 'i' referenced before assignment
エラーメッセージの意味は理解できたと思いますが、なぜそうなるのでしょうか? これを回避する方法はありますか?
私はpython3で次の行に沿って何かをしようとしています:
i = 1337
def g():
print(i)
i = 42
g()
しかし、次のエラーが発生します
UnboundLocalError: local variable 'i' referenced before assignment
エラーメッセージの意味は理解できたと思いますが、なぜそうなるのでしょうか? これを回避する方法はありますか?
つまり、関数内で特定の変数名に値が割り当てられていない場合、変数への参照が検索されます。グローバルを使用 - そのような場合、python はグローバルスコープで i を探します:
i = 1337
def g():
global i
print i
i = 42
g()
PEP-0227 で変数スコープの詳細を読むことができます