この記事で分かること
- グローバル変数とは何かが分かる
- Pythonのグローバル変数の定義の仕方が分かる
- Pythonのグローバル変数の使い方が分かる
Pythonでグローバル変数に代入する概要
Pythonでプログラムで、プログラム中のどこでも参照できる変数のことをグローバル変数と呼びます。つまり、グローバル変数には次のような使用用途があります。
- 定義した関数が複数あった場合に、それら複数の関数で共通して使う変数
- 1つの関数の処理では完結しない処理の途中結果を保存する変数
- プログラム全体として保存し、どの場所からでも参照できる変数
ここでは、グローバルに定義し、その変数に代入する方法、つまり関数からグローバル変数を書き換える方法をサンプルプログラムを使って説明します。グローバル変数を書き換える方法を知ることによって、1つの関数内からだけではなく、ファイル(モジュール)から使うことができる変数(グローバル変数)を定義することができます。その結果、1つのファイル(モジュール)単位で共通して使われる変数を1つにまとめることができます。
Pythonでグローバル変数に代入する前提環境
Pythonの関数でグローバル(global)変数を書き換える前提の環境は、下の記事で説明している私の環境と同じ環境で確認しています。
また、レンタルサーバなどのLinuxサーバを使っている場合は、下の記事でプログラミングする環境の作り方を説明しています。もし、まだプログラムする環境ができていない方は、先にこちらの記事を読んで、プログラミングできる環境をつくることをおすすめします。
Pythonでグローバル変数に代入するサンプルプログラム
ここでは、グローバル変数を定義して、それを使うサンプルプログラムを説明します。次のような順番でグローバル変数に代入し、代入したグローバル変数を確認する方法を説明します。
- グローバル変数の定義
- グローバル変数に代入する関数の定義
- グローバル変数を取得する関数の定義
- 定義した関数を呼び出す処理
- 処理実行の結果
グローバル変数の定義
まず、関数の外に変数の宣言と初期値を記載します。下の例では、 「GLOBAL_VAL」という名前のグローバル変数を定義し、初期値をstring型(文字列)の「default」にします。
GLOBAL_VAL = 'default'
グローバル変数「GLOBAL_VAL」を文字列「default」で初期化する。
※必須ということではないが、グローバル変数は、「GLOBAL_VAL」のように大文字で書く慣習があります。
グローバル変数に代入する関数の定義
次に、グローバル変数を書き換える関数「set_global_variable」を定義します。引数に書き換えたい値「value」を渡します。グローバル変数を使う時には、「global GLOBAL_VAL」というように グローバル変数であることを宣言する必要があることに注意してください。
def set_global_variable(value):
global GLOBAL_VAL
GLOBAL_VAL = value
- 引数に書き換え用の値「value」を取る関数「set_global_variable」を宣言する。
- グローバル変数「GLOBAL」を宣言する。
- グローバル変数「GLOBAL」に引数で得た「value」を代入する。
グローバル変数を取得する関数の定義
次は、グローバル変数を取得する関数「get_global_variable」を定義します。この 「get_global_variable」がコールされるとグローバル変数「GLOBAL_VAL」の値を返却するだけなので引数はありません。
ここでも、グローバル変数を使う時には、「global GLOBAL_VAL」というようにglobalを宣言する必要があることに注意してください。
def get_global_variable():
global GLOBAL_VAL
return GLOBAL_VAL
- 関数「get_global_variable」を宣言する。
- グローバル変数「GLOBAL」を宣言する。
- 関数「get_global_variable」の戻り(返り値)にグローバル変数「GLOBAL」を戻す。
定義した関数を呼び出す処理
最後に、上記で定義した関数を呼び出す処理を説明します。この処理は、1つ目にグローバル変数の初期値を取得して表示します。次に、グローバル変数を初期値から文字列「changed value」に書き換えます。書き換えた後、もう一度グローバル変数を取得して、print文で確認します。
if __name__ == '__main__':
value = get_global_variable()
print(value)
set_global_variable('changed value')
value = get_global_variable()
print(value)
- 変数「value」を「get_global_variable」で得たグローバル変数の値で初期化する。
- 変数「value」の値を表示する。
- 関数「set_global_variable」でグローバル変数を文字列「changed value」に書き換える。
- 関数「get_global_variable」でグローバル変数を変数「value」に取得する。
- 変数「value」の値を表示する。
処理実行の結果
初めのprint文では初期値(デフォルト)の値が表示されるので、文字列「default」が表示されています。その後、「set_global_variable」によって初期値から「changed value」に書き換えているので、「changed value」が表示されています。
この結果から、グローバル変数を関数「set_global_variable」から書き換えることができていると言えます。
$ python test.py
default
changed value