【Python】ローカル変数とグローバル変数の使い方や違い

Pythonの変数には「ローカル変数」と「グローバル変数」があります。

「ローカル変数」と「グローバル変数」の使い方にはもちろん違いがあります。

今回は、Pythonの「ローカル変数」と「グローバル変数」の使い方や違いを解説します。

Python ローカル変数とグローバル変数の使い方や違い

ローカル変数

Pythonの変数には「ローカル変数」があります。

「ローカル変数」とは文字通り、ローカルな変数のことです。変数が使える範囲(スコープ)が狭く、変数が生成された関数内でしか使えません。

# 足し算関数
def cul_Plus(num):
    num_p = 1
    return num_p + num

関数「cul_Plus」」作成しました。足し算をする単純な関数です。

関数内にある「num_p」がローカル変数になります。「num」は関数の引数(パラメーター)ですね。

ローカル変数はその関数内でしか使えない

このローカル変数「num_p」は関数内でしか使えません。

# 関数を使う
ret = cul_Plus(1)

print(ret)
#[結果] 2
print(num_p)
#[結果] NameError: name 'num_p' is not defined

先の関数を実行しました。呼び出し側で関数内のローカル変数「num_p」を使おうとすると、エラーになりました。

ローカル変数の範囲(スコープ)は関数の中だけです。

ここでは「cul_Plus」の中だけで有効です。

では、変数をいろいろなところで使いまわしたい場合はどうするか?もちろん変数を引数として渡していく方法が一般的ではありますが、それ以外にグローバル変数という方法もあります。

グローバル変数

# 足し算関数
def cul_Plus(num):
    global num_p
    num_p = 1
    return num_p + num
num_p = 0

# 関数を使う
ret = cul_Plus(1)

print(ret)
#[結果] 2
print(num_p)
#[結果] 1

先ほどの「ローカル変数」のコードを「グローバル変数」におきかえてみます。

関数「cul_Plus」の中に「global num_p」を追加しました。変数の前に「global」をつけるのがグローバル変数です。グローバル変数は関数外でも使えるようになります。

関数「cul_Plus」を呼び出す前に「num_p = 0」を1行追加しました。これは先ほどのグローバル変数にゼロをセットしました。

今回はエラーがでずに「num_p」の値「1」が取得できました。これは「num_p」が「グローバル変数」となったからです。

「グローバル変数」は関数の中でも外でも使えます。

関数内では「num_p = 1」として使いました。関数の外では「num_p = 0」として使いました。

グローバル変数を使わないと結果が変わる

上のコードの「global num_p」を削除したらどうなると思いますか?

# 足し算関数
def cul_Plus(num):
    num_p = 1
    return num_p + num
num_p = 0

# 関数を使う
ret = cul_Plus(1)

print(ret)
#[結果] 2
print(num_p)
#[結果] 0

「global num_p」を削除すると「num_p」の値が「0」になりました。

関数内の「num_p」は関数内だけで有効な変数です。関数外の「num_p」は関数の外だけで有効な変数です。2つの変数名は同じですが、違うものです。

これがグローバル変数であれば同じ変数になりますが、グローバル変数でないと別々の変数になります。ここに注意してください!

 

以上、Pythonのローカル変数とグローバル変数の使い方や違いについてでした。

コメント