【第17回目】Python初心者のスコープ

scope python
スポンサーリンク

プログラミング初心者のテツヤです。
今回はスコープについて、書いていきます。スコープといえば、昔スーパーファミコンでスーパースコープという狙って撃つゲームがありました。親にねだって買ってもらいましたが、すぐに飽きてやらなくなり親に怒られた記憶だけ残っています。と、いきなり話が逸れてしまいましたが始めましょう。

このスコープですが、前回書いた関数にとても関係があるですね。

ローカル変数・グローバル変数

pythonでいうスコープとは、「変数の有効範囲」になります。関数の中で定義された変数をローカル変数と言います。関数の外で定義された変数はグローバル変数と言います。そして、ローカル変数は定義された関数の中でのみ使用が可能になる変数になります。

以下のコードを実行してください。

1 x = 0 #グローバル変数
2 y = 1 #グローバル変数
3 
4 def function():
5     x = 1 #ローカル変数
6     print(x, y)
7 
8 function() #関数の呼び出し
9 print(x, y) #通常出力

8行目の関数呼び出しで「11」と出力されたと思います。
5行目関数定義内でxに1が代入されて出力されています。
9行目で「01」が出力されています。
5行目の代入が反映されていないですね。

関数を使用するときは関数内のローカル変数が優先されて使用されます。そして、その場合グローバル変数には影響がありません。

ローカル変数は関数の外から呼び出せない

以下のコードを実行してみてください。

1 def local():
2      l = 1
3 
4 print(l) 

エラーが出ましたね。関数の外からは呼び出せないんですね。

以下のコードに書き直してみてください。

1 def local():
2     l = 1
3     print(l)
4 local()

どうでしょう。通常通り呼び出せたと思います。

まとめ

  • 関数内で定義した変数をローカル変数という。
  • 関数の外で定義された変数をグローバル変数という。
  • ローカル変数は関数の外からは呼び出せない。


お疲れ様です。僕なりの理解ですが、グローバル変数は簡単に変えたら危険。でも関数内の変数変更にミスがあっても、被害が最小限に済むって事でしょうか。
全然理解できないですか。僕もそうです。難しいですが、徐々に理解して行きましょう。



最後まで読んで頂いてありがとうございます。

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