logo

Python のグローバル変数とローカル変数

Python グローバル変数 これらは関数内で定義されておらず、グローバル スコープを持つものですが、Python では ローカル変数 は関数内で定義されており、スコープはその関数のみに限定されます。言い換えれば、ローカル変数は初期化された関数内でのみアクセス可能であるのに対し、グローバル変数はプログラム全体およびすべての関数内でアクセス可能であると言えます。

Python ローカル変数

Python のローカル変数は、関数内で初期化され、その特定の関数にのみ属する変数です。関数外からはアクセスできません。ローカル変数を作成する方法を見てみましょう。



Python でローカル変数を作成する

ローカル変数の定義とアクセス

Python3




配列としてのリスト





def> f():> ># local variable> >s>=> 'I love Geeksforgeeks'> >print>(s)> # Driver code> f()>

>

>

出力

I love Geeksforgeeks>

ローカル変数は関数の外で使用できますか?

このローカル変数を関数の外で使用しようとすると、何が起こるか見てみましょう。

Python3




def> f():> > ># local variable> >s>=> 'I love Geeksforgeeks'> >print>(>'Inside Function:'>, s)> # Driver code> f()> print>(s)>

>

>

出力:

 NameError : name 's' is not defined>

Python グローバル変数

これらは、関数の外側で定義され、プログラム全体、つまりすべての関数の内側と外側でアクセスできるものです。 Python グローバル変数を作成する方法を見てみましょう。

グローバル変数を作成する Pythonで

Python グローバル変数の定義とアクセス。

Python3




# This function uses global variable s> def> f():> >print>(>'Inside Function'>, s)> # Global scope> s>=> 'I love Geeksforgeeks'> f()> print>(>'Outside Function'>, s)>

>

>

出力

Inside Function I love Geeksforgeeks Outside Function I love Geeksforgeeks>

変数 s はグローバル変数として定義され、関数の内部と外部の両方で使用されます。

注記: ローカル変数がないため、グローバル変数の値が使用されますが、ローカル変数とグローバル変数の両方が同じ名前であることを確認してください。

Python でローカル変数とグローバル変数を使用するのはなぜですか?

では、関数内およびグローバルで初期化された同じ名前の Python 変数がある場合はどうなるでしょうか?ここで、ローカル変数がグローバル変数に何らかの影響を与えるのか、それともその逆なのか、関数 f() 内の変数の値を変更するとどうなるのか、という疑問が生じます。グローバルにも影響が出るのでしょうか?次のコード部分でテストします。

同じ名前の変数が関数のスコープ内でも定義されている場合、グローバル値ではなく、関数内で指定された値のみが出力されます。

Python3




# This function has a variable with> # name same as s.> def> f():> >s>=> 'Me too.'> >print>(s)> # Global scope> s>=> 'I love Geeksforgeeks'> f()> print>(s)>

>

>

出力

Me too. I love Geeksforgeeks>

さて、関数内でグローバル変数の値を変更しようとするとどうなるでしょうか?以下の例を使用して見てみましょう。

Python3




# This function uses global variable s> def> f():> >s>+>=> 'GFG'> >print>(>'Inside Function'>, s)> # Global scope> s>=> 'I love Geeksforgeeks'> f()>

>

>

出力:

 UnboundLocalError : local variable 's' referenced before assignment>

上記のプログラムを動作させるには、Python で global キーワードを使用する必要があります。このグローバル キーワードが何なのか見てみましょう。

グローバルキーワード

使用する必要があるのは、 グローバルキーワード 代入を行ったり、グローバル変数を変更したりする場合は、関数内で使用します。印刷やアクセスには global は必要ありません。 Python は、f() 内の s への代入によりローカル変数が必要であると想定しているため、最初のステートメントでエラー メッセージがスローされます。関数内で変更または作成される変数は、グローバル変数として宣言されていない場合、ローカル変数です。グローバル変数を使用したいことを Python に伝えるには、キーワードを使用する必要があります。 グローバル 、次の例でわかるように:

例 1: Python グローバル キーワードの使用

Python3




# This function modifies the global variable 's'> def> f():> >global> s> >s>+>=> ' GFG'> >print>(s)> >s>=> 'Look for Geeksforgeeks Python Section'> >print>(s)> # Global Scope> s>=> 'Python is great!'> f()> print>(s)>

>

>

出力

Python is great! GFG Look for Geeksforgeeks Python Section Look for Geeksforgeeks Python Section>

今では曖昧さはありません。

例 2: Python のグローバル変数とローカル変数の使用

Python3




a>=> 1> # Uses global because there is no local 'a'> def> f():> >print>(>'Inside f() : '>, a)> # Variable 'a' is redefined as a local> def> g():> >a>=> 2> >print>(>'Inside g() : '>, a)> # Uses global keyword to modify global 'a'> def> h():> >global> a> >a>=> 3> >print>(>'Inside h() : '>, a)> # Global scope> 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>

ローカル変数とローカル変数の違いグローバル変数

比較基準 グローバル変数 ローカル変数
意味 関数の外で宣言された 関数内で宣言される
一生 これらはプログラムの実行開始時に作成され、プログラムが終了すると失われます。 これらは関数の実行開始時に作成され、関数の終了時に失われます。
データ共有 データ共有を提供します データ共有は提供されません
範囲 コード全体からアクセス可能 関数内のみアクセス可能
必要なパラメータ パラメータの受け渡しは必要ありません パラメータの受け渡しが必要です
ストレージ コンパイラによって選択された固定の場所 それらはスタック上に保持されます
価値 値が変更されると、コード全体に反映されます 一度変更された変数はプログラムの他の機能に影響を与えません