Python グローバル変数、ローカル変数、および非ローカル変数
Python のグローバル変数、ローカル変数、非ローカル変数
このチュートリアルでは、Python グローバル変数、ローカル変数、非ローカル変数、およびそれらの使用場所について学習します。
ビデオ:Python のローカル変数とグローバル変数
グローバル変数
Python では、関数の外またはグローバル スコープで宣言された変数はグローバル変数と呼ばれます。これは、関数の内外でグローバル変数にアクセスできることを意味します。
Python でグローバル変数を作成する方法の例を見てみましょう。
例 1:グローバル変数を作成する
x = "global"
def foo():
print("x inside:", x)
foo()
print("x outside:", x)
出力
x inside: global x outside: global
上記のコードでは、 x を作成しました グローバル変数として foo()
を定義 グローバル変数 x を出力します .最後に、foo()
を呼び出します x の値を出力します .
x の値を変更したい場合 関数内?
x = "global"
def foo():
x = x * 2
print(x)
foo()
出力
UnboundLocalError: local variable 'x' referenced before assignment
Python は x を扱うため、出力にエラーが表示されます ローカル変数と x として foo()
内でも定義されていません .
これを機能させるために、global
を使用します。 キーワード。詳細については、Python グローバル キーワードにアクセスしてください。
ローカル変数
関数の本体内またはローカル スコープ内で宣言された変数は、ローカル変数と呼ばれます。
例 2:スコープ外のローカル変数にアクセスする
def foo():
y = "local"
foo()
print(y)
出力
NameError: name 'y' is not defined
ローカル変数 y にアクセスしようとしているため、出力にエラーが表示されます グローバルスコープで、ローカル変数は foo()
内でのみ機能します またはローカル スコープ。
Python でローカル変数を作成する方法の例を見てみましょう。
例 3:ローカル変数を作成する
通常、関数内で変数を宣言してローカル変数を作成します。
def foo():
y = "local"
print(y)
foo()
出力
local
前の問題を見てみましょう x はグローバル変数で、x を変更したかった foo()
内 .
グローバル変数とローカル変数
ここでは、同じコードでグローバル変数とローカル変数を使用する方法を示します。
例 4:同じコードでグローバル変数とローカル変数を使用する
x = "global "
def foo():
global x
y = "local"
x = x * 2
print(x)
print(y)
foo()
出力
global global local
上記のコードでは、 x を宣言しています グローバルおよび y として foo()
のローカル変数として .次に、乗算演算子 *
を使用します グローバル変数 x を変更するには 両方の x を出力します と y .
foo()
を呼び出した後 、 x の値 global global
になります x * 2
を使用したため global
を 2 回印刷する .その後、ローカル変数 y の値を出力します すなわち local
.
例 5:同じ名前のグローバル変数とローカル変数
x = 5
def foo():
x = 10
print("local x:", x)
foo()
print("global x:", x)
出力
local x: 10 global x: 5
上記のコードでは、同じ名前 x を使用しました グローバル変数とローカル変数の両方。変数は両方のスコープ、つまり foo()
内のローカル スコープで宣言されているため、同じ変数を出力すると異なる結果が得られます。 foo()
外のグローバル スコープ .
foo()
内の変数を出力すると local x: 10
を出力します .これは、変数のローカル スコープと呼ばれます。
同様に、変数を foo()
の外に出力すると、 、それは
global x:5
を出力します .これは、変数のグローバル スコープと呼ばれます。
非ローカル変数
非ローカル変数は、ローカル スコープが定義されていないネストされた関数で使用されます。これは、変数がローカル スコープにもグローバル スコープにもないことを意味します。
非ローカル変数が Python でどのように使用されるかの例を見てみましょう。
nonlocal
を使用します 非ローカル変数を作成するためのキーワード
例 6:非ローカル変数を作成する
def outer():
x = "local"
def inner():
nonlocal x
x = "nonlocal"
print("inner:", x)
inner()
print("outer:", x)
outer()
出力
inner: nonlocal outer: nonlocal
上記のコードでは、ネストされた inner()
があります。 関数。 nonlocal
を使用します 非ローカル変数を作成するためのキーワード。 inner()
関数は別の関数 outer()
のスコープで定義されています .
注意 :非ローカル変数の値を変更すると、変更はローカル変数に反映されます。
Python