文法

【Python】グローバル変数の書き方と注意点

 

嫁ちゃん
嫁ちゃん

変数にはローカル変数とグローバル変数があると聞いたのですが、どんなの?

わたし
わたし

変数が使用できる範囲(スコープ)が違うんだよ。

グローバル変数

グローバル変数とローカル変数の違い

グローバル変数とローカル変数の違いは、変数が使用できる範囲(スコープ)の違いにあります。

ローカル変数(ローカルスコープで宣言された変数)は関数やクラス内で宣言された変数で、これは別の関数からは基本的には参照できません。

また、グローバル変数(グローバルスコープで宣言された変数)は関数の外で宣言された変数を関数の中で参照はできますが書き換えることができません。書き換えるには global キーワードを付けた宣言が関数内に必要です。

グローバル変数の参照

python
a = 100 def sample(): a = 999 print(a) sample() print(a)

関数 sample の中の print 文 が実行され、グローバル変数 a の内容が出力されましたが、最後の print 文 の出力結果は 100 のままです。

実行結果
999 100

これは、同じ a という変数でも、グローバル変数として宣言された変数 a と、ローカル変数として宣言された変数 a は別々のものになります。

グローバル変数そのまま関数内で使う

python
a = 100 def sample(): global a a = 999 print(a) sample() print(a)

関数内で global キーワードを付けて宣言された a は、関数の外で宣言された a を書き換えることができます。

実行結果
999 999

関数内で宣言されたローカル変数は関数の外では参照できない

python
def sample() a = 100 print(a)

エラーになりましたね。

実行結果
print a    ^ SyntaxError: Missing parentheses in call to 'print'. Did you mean print(a)?

おわりに

嫁ちゃん
嫁ちゃん

同じ変数 a でもスコープが違うだけで、書き換えができたり、できなかったりするのね。

わたし
わたし

そうなんですよ。

だから、global キーワードは便利(ローカルスコープではなくなる)なので多用してしまうと、どこで宣言され、どこで値が書き換えられたのか、わかりにくくなってしまうので、注意が必要だよ。

この記事がお役に立てましたら幸いです。
人気ブログランキングに参加しております。
よろしければクリックしていただけると嬉しいです。
にほんブログ村 IT技術ブログ Pythonへ
※本サイトに掲載する情報には充分に注意を払っておりますが、その内容について保証するものではありません。
※本サイトの使用ならびに閲覧によって生じたいかなる損害にも責任を負いかねます。

コメント

タイトルとURLをコピーしました