0

私はpython3で次の行に沿って何かをしようとしています:

i = 1337
def g():
    print(i)
    i = 42
g()

しかし、次のエラーが発生します

UnboundLocalError: local variable 'i' referenced before assignment

エラーメッセージの意味は理解できたと思いますが、なぜそうなるのでしょうか? これを回避する方法はありますか?

4

3 に答える 3

5

つまり、関数内で特定の変数名に値が割り当てられていない場合、変数への参照が検索されます。グローバルを使用 - そのような場合、python はグローバルスコープで i を探します:

i = 1337

def g():
    global i
    print i
    i = 42

g()

PEP-0227 で変数スコープの詳細を読むことができます

于 2013-04-09T03:42:29.697 に答える