最初にグローバルスコープでaを宣言せずに、以下が Python で機能するのはなぜですか?
def setA():
global a
a = 5
def printA():
print a
setA()
printA()
これが正しい方法であるように私には思えます:
a = None
def setA():
global a
a = 5
def printA():
print a
setA()
printA()
最初にグローバルスコープでaを宣言せずに、以下が Python で機能するのはなぜですか?
def setA():
global a
a = 5
def printA():
print a
setA()
printA()
これが正しい方法であるように私には思えます:
a = None
def setA():
global a
a = 5
def printA():
print a
setA()
printA()
基本的に、新しいローカル変数を作成するのと同じ理由でa = 5
: 変数に代入するとき、Python はそれが既に存在するかどうかを気にしません。このglobal
ステートメントは、単に「このスコープでの次の名前の使用は、グローバル スコープで動作していると見なされる」ことを意味します。
すでに存在するa = 5
かどうかにかかわらず、モジュールのトップレベルで実行できます。したがって、関数内で a
実行できます。名前がすでに存在するかどうかは問題ではないという事実を含め、関数内の割り当てをグローバルレベルの割り当てと同じように機能させます。global a; a = 5
global