スライドショー

【Python入門】グローバル変数とローカル変数について理解しよう!

Pythonでコードを書くときに、変数がグローバルなものかローカルなものかを考えながらプログラミングしていますか?

Pythonでは変数の扱いについて気をつけることは少ないのですが、関数の外で宣言された変数か、関数の内側で宣言された関数かどうかはとても重要な要素の一つです。

グローバル変数とローカル変数の違いについて詳しくしりたい
グローバル変数を書き換える方法について知りたい

といった方に向けて、この記事では以下の内容について解説していきます。

  • 【基礎】グローバル変数とローカル変数の違い
  • 【基礎】変数のスコープとは
  • 【基礎】グローバル変数、ローカル変数の例
  • 【発展】関数の中からグローバル変数を書き換える方法


グローバル変数はPythonの基礎的な部分になるので今一度学び直したという方も、ぜひ最後までご覧ください!

グローバル変数とは

グローバル変数はどの範囲からもアクセスできる変数で、一番自由度の高い変数とも言えます。グローバル変数について理解するには、変数のスコープについて知っておく必要があります。

スコープとは、変数がアクセスできる範囲のことを言います。変数はコードのどこに書いてもアクセスできるというわけではなく、グローバル変数かローカル変数かのどちらかに分けられます。

例えば関数の中で宣言された変数か外で宣言された変数かによって動き方が変わっていきます。

それではそのグローバル変数とローカル変数について見ていきましょう。

グローバル変数の使い方

グローバル変数はどの範囲からもアクセスできる変数で一番自由度の高い変数とも言えます。

こちらのコードをご覧ください。

gvar = 'abcdefg'

def gfunc():
    print(gvar)

gfunc()
print(gvar)

実行結果

abcdefg # gfunc関数での表示
abcdefg # print関数での表示

ここではgfunc関数の外にgvar変数を宣言して値を代入しています。

このように、gfunc関数の外で宣言されたgvar変数は、gfunc関数の中でも表示(参照)させることができました。

このような変数をグローバル変数といいます。

ローカル変数の使い方

次にローカル変数についておさらいしておきましょう。

ローカル変数はグローバル変数と違ってアクセスできる範囲が変わってきます。

こちらのコードをご覧ください。

def lfunc():
    lvar = 'abcdefg'
    print(lvar)
lfunc()
print(lvar)

実行結果

abcdefg # lfunc関数での表示
(エラー) # print関数での表示

このようにlfunc関数の中で宣言した変数は、lfunc関数の外側ではprint関数で表示(参照)させることができませんでした。

このような変数をローカル変数といいます。

次はこのようなグローバル変数とローカル変数をもっと扱いやすくする方法について学んでいきましょう。

関数の中からグローバル変数を書き換える方法

先程はグローバル変数を関数の中で表示(参照)させることができました。

しかし、このグローバル変数を書き換える(再代入)のは通常の方法ではうまくはいきません。

こちらのコードをご覧ください。

gvar = 'abcdefg'

def testfunc():
    gvar = '0123456'
    print(gvar)

print(gvar)
testfunc()
print(gvar)

実行結果

abcdefg # print関数での表示
0123456 # testfunc関数での表示
abcdefg # print関数での表示

一見すると書き換わったようにも見えますが、testfunc関数が実行されたあともグローバル変数で代入した値がそのまま表示されました。

これではグローバル変数が書き換わっていません。これを直すにはglobal宣言を使います。

こちらのコードをご覧ください。

gvar = 'abcdefg'

def testfunc():
    global gvar
    gvar = '0123456'
    print(gvar)

print(gvar)
testfunc()
print(gvar)

実行結果

abcdefg # print関数での表示
0123456 # testfunc関数での表示
0123456 # print関数での表示

先ほどとは変わって、testfunc関数が実行されたあとも再代入した値が表示されていますね。

まとめ

この記事ではグローバル変数について、以下の内容を解説しました。

  • 変数のスコープとは
  • グローバル変数とローカル変数の違い
  • グローバル変数、ローカル変数の例
  • 関数の中からグローバル変数を書き換える方法

普段はあまり気にかけず、すべての変数をグローバル変数にしていた人もいるかもしれませんが、使い分けることでより目的がはっきりとしたコードを書けるようになります。

また関数とこれらの変数が絡んでくると少々ややこしいのですが、global宣言の使い所をしっかりとおさえておけば問題は無いでしょう。

もし変数についてわからなくなった方は、ぜひまたこの記事をご覧ください。

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

ryo

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説