Python グローバル キーワード
Python グローバル キーワード
この記事では、グローバル キーワード、グローバル変数、およびグローバル キーワードをいつ使用するかについて学習します。
この記事を読む前に、Python のグローバル変数、ローカル変数、および非ローカル変数の基本を理解しておいてください。
グローバル キーワードとは
Python では、global
キーワードを使用すると、現在のスコープ外で変数を変更できます。グローバル変数を作成し、ローカル コンテキストで変数を変更するために使用されます。
グローバル キーワードのルール
global
の基本ルール Python のキーワードは次のとおりです:
- 関数内で変数を作成すると、デフォルトでローカルになります。
- 関数の外で変数を定義すると、デフォルトでグローバルになります。
global
を使用する必要はありません キーワード。 global
を使用します 関数内のグローバル変数を読み書きするためのキーワードglobal
の使用 関数外のキーワードは無効です。
global キーワードの使用
例を見てみましょう。
例 1:関数内からグローバル変数にアクセスする
c = 1 # global variable
def add():
print(c)
add()
上記のプログラムを実行すると、出力は次のようになります:
1
ただし、関数内からグローバル変数を変更する必要がある場合もあります。
例 2:関数内からグローバル変数を変更する
c = 1 # global variable
def add():
c = c + 2 # increment c by 2
print(c)
add()
上記のプログラムを実行すると、出力にエラーが表示されます:
UnboundLocalError: local variable 'c' referenced before assignment
これは、グローバル変数にしかアクセスできず、関数内から変更できないためです。
これに対する解決策は、global
を使用することです キーワード。
例 3:global を使用して関数内からグローバル変数を変更する
c = 0 # global variable
def add():
global c
c = c + 2 # increment by 2
print("Inside add():", c)
add()
print("In main:", c)
上記のプログラムを実行すると、出力は次のようになります:
Inside add(): 2 In main: 2
上記のプログラムでは、 c を定義しています add()
内のグローバル キーワードとして 関数。
次に、変数 c をインクリメントします 2までに 、つまり c = c + 2
.その後、add()
を呼び出します。 関数。最後に、グローバル変数 c を出力します .
ご覧のとおり、関数外のグローバル変数 c = 2
でも変更が発生しました .
Python モジュール間のグローバル変数
Python では、単一のモジュール config.py
を作成します。 グローバル変数を保持し、同じプログラム内の Python モジュール間で情報を共有します。
Python モジュール間でグローバル変数を共有する方法は次のとおりです。
例 4:Python モジュール間でグローバル変数を共有する
config.py
を作成する ファイル、グローバル変数を保存する
a = 0
b = "empty"
update.py
を作成します ファイル、グローバル変数を変更する
import config
config.a = 10
config.b = "alphabet"
main.py
を作成する ファイル、値の変化をテストする
import config
import update
print(config.a)
print(config.b)
main.py
を実行すると ファイル、出力は
10 alphabet
上記では、3 つのファイルを作成しました:config.py
、 update.py
、および main.py
.
モジュール config.py
a のグローバル変数を保存します と b . update.py
で ファイル、config.py
をインポートします モジュールを開き、a の値を変更します と b .同様に、 main.py
で ファイル、両方の config.py
をインポートします そして update.py
モジュール。最後に、グローバル変数の値が変更されているかどうかを出力してテストします。
ネストされた関数のグローバル
ネストされた関数でグローバル変数を使用する方法は次のとおりです。
例 5:ネストされた関数でグローバル変数を使用する
def foo():
x = 20
def bar():
global x
x = 25
print("Before calling bar: ", x)
print("Calling bar now")
bar()
print("After calling bar: ", x)
foo()
print("x in main: ", x)
出力は次のとおりです:
Before calling bar: 20 Calling bar now After calling bar: 20 x in main: 25
上記のプログラムでは、ネストされた関数 bar()
内でグローバル変数を宣言しました。 . foo()
内 関数、x global キーワードの効果はありません。
bar()
を呼び出す前と呼び出した後 、変数 x ローカル変数の値、つまり x = 20
を取ります . foo()
の外側 関数、変数 x bar()
で定義された値を取ります 関数、つまり x = 25
.これは、global
を使用したためです。 x のキーワード bar()
内にグローバル変数を作成する 関数 (ローカル スコープ)。
bar()
内に変更を加えた場合 関数、変更はローカルスコープの外に表示されます、つまり foo()
.
Python