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

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

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

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

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

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


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

グローバル変数とは

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

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

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

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

グローバル変数の使い方

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

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

実行結果

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

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

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

ローカル変数の使い方

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

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

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

実行結果

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

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

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

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

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

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

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

実行結果

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

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

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

実行結果

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

まとめ

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

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

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

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

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

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

ryo

おすすめコンテンツ

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

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