以下の2番目のケースでは、Pythonはローカル変数を検索しようとします。見つからない場合、1番目のケースのように外側のスコープを検索できないのはなぜですか?
これは、ローカルスコープでxを探し、次に外側のスコープで探します。
def f1():
x = 5
def f2():
print x
これは与える local variable 'x' referenced before assignment
エラー:
def f1():
x = 5
def f2():
x+=1
関数f2()の署名を変更することは許可されていないため、xの値を渡したり返したりすることはできません。ただし、xを変更する方法が必要です。 Python Python _ ===外側のスコープ(global
キーワードに似たもの)で変数名を探すように明示的に指示する方法はありますか?
Pythonバージョン:2.7
def f1():
x = { 'value': 5 }
def f2():
x['value'] += 1
回避策は、可変オブジェクトを使用し、そのオブジェクトのメンバーを更新することです。 Pythonでは、名前のバインドが難しい場合があります。