Pythonでのグローバル(global)変数の宣言方法

Pythonでのグローバル変数の宣言方法と仕様について説明します。

グローバル変数の宣言方法

グローバル変数を宣言する書式は以下のとおりです。

global 変数名

また、グローバルスコープで変数を宣言する場合は、以下のように関数の外側で宣言します。

var = 1    # グローバル変数
def add_one(x):
    print var + x

add_one(2)    # 3

変数を関数の外側に定義することによって関数内からでもアクセスできるようになります。

では関数内で変数varに10を代入してみるとどうなるでしょうか。

var = 1   # グローバル変数
def add_one(x):
    var = 10
    print var + x

add_one(2)    # 12
print var     # 1

関数を呼び出した後に変数varを出力しても10とならずに初めに初期化した1が出力されています。これは関数内で定義したvarはグローバル変数のvarとは(名前は同じですが)別の変数として扱われ、関数の外に出るとグローバル変数のvarが参照されるからです。

もし関数内でグローバル変数に値を代入したい場合は、以下のように変数宣言時に「global」を付ける必要があります。

var = 1
def add_ten(x):
    global var
    var = 10
    print var + x

add_ten(2)    # 12
print var     # 10

この例では関数の外に出ても、関数内で代入した値10が有効になっているのがわかります。

グローバル変数はコードを書く上で非常に便利ですが、予期せず変数の値が書き換わってしまったり、無駄にメモリを占有してしまったりする場合があります。グローバル変数を使用する場合はきちんと設計した上で使用するべきです。


イベント

2017/12/05(火)
Design Thinking Square

購読

平日・毎朝更新中