#グローバル変数は、関数の外部で定義および宣言された変数であり、関数の内部で使用する必要があります。
#这个函数使用全局变量s def f(): print s # 全局作用域 s = "I love Python" f()
出力:
I love Python
同じ名前の変数が関数スコープ内で定義されている場合、グローバル値ではなく、関数内で指定された値のみが出力されます。
# 这个函数有一个与s同名的变量。 def f(): s = "Me too." print s # 全局作用域 s = "I love Python" f() print s
出力:
Me too I love Python
関数 f() を呼び出す前に、変数 s を文字列「I love Python」として定義します。 f() 内の唯一のステートメントは、「print s」ステートメントです。ローカル s がないため、グローバル s の値が使用されます。
問題は、関数 f() 内の s の値を変更するとどうなるかということです。全体的な状況に影響はありますか?
次のコードでテストします。
def f(): print s # 如果我们在下面评论,这个程序不会显示错误。 s = "Me too." print s #全局作用域 s = "I love Python" f() print s
出力:
Line 2: undefined: Error: local variable 's' referenced before assignment
上記のプログラムが動作するには、「global」キーワードを使用する必要があります。それらを割り当て/変更したい場合は、関数内で global キーワードを使用するだけです。印刷とアクセスにはグローバルは必要ありません。
Python では、ローカル変数が必要であると「想定」しているため、最初の print ステートメントでは、f() 内の代入が原因でこのエラー メッセージがスローされます。関数内で変更または作成された変数は、グローバル変数として宣言されていない場合、ローカルになります。 Python にグローバル変数を使用するように指示するには、キーワード「global」を使用する必要があります。
次の例に示すように:
# 这个函数修改全局变量's' def f(): global s print s s = "Look for Python" print s #全局作用域 s = "Python is great!" f() print s
出力:
Python is great! Look for Python. Look for Python.
A nice例:
a = 1 # 使用global,因为没有本地'a' def f(): print 'Inside f() : ', a #变量“a”被重新定义为局部变量 def g(): a = 2 print 'Inside g() : ',a #使用全局关键字修改全局'a' def h(): global a a = 3 print 'Inside h() : ',a # 全局作用域 print 'global : ',a f() print 'global : ',a g() print 'global : ',a h() print 'global : ',a
出力:
global : 1 Inside f() : 1 global : 1 Inside g() : 2 global : 1 Inside h() : 3 global : 3
関連する推奨事項: 「Python チュートリアル 」
以上がPythonのグローバル変数とローカル変数の違い(詳細コード解説)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。