2

最初にグローバルスコープで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()
4

1 に答える 1

8

基本的に、新しいローカル変数を作成するのと同じ理由でa = 5: 変数に代入するとき、Python はそれが既に存在するかどうかを気にしません。このglobalステートメントは、単に「このスコープでの次の名前の使用は、グローバル スコープで動作していると見なされる」ことを意味します。

すでに存在するa = 5かどうかにかかわらず、モジュールのトップレベルで実行できます。したがって、関数内で a実行できます。名前がすでに存在するかどうかは問題ではないという事実を含め、関数内の割り当てをグローバルレベルの割り当てと同じように機能させます。global a; a = 5global

于 2013-01-03T19:52:14.970 に答える