カテゴリ: Python 更新日: 2025/05/29

Pythonの変数スコープとは?ローカル変数とグローバル変数の違い

Pythonの変数スコープとは?ローカル変数とグローバル変数の違い
Pythonの変数スコープとは?ローカル変数とグローバル変数の違い

先生と生徒の会話形式で理解しよう

生徒

「先生、Pythonで変数を使っていると、うまく動かないときがあります。なんでですか?」

先生

「それは『スコープ』という考え方が関係しているかもしれません。変数には、使える範囲があるんですよ。」

生徒

「スコープってなんですか?難しそう…」

先生

「安心して、簡単に説明するね。ローカル変数とグローバル変数の違いを知るだけで、スッキリ理解できるよ。」

-

1. 変数のスコープとは?

1. 変数のスコープとは?
1. 変数のスコープとは?

Pythonの変数には「スコープ(scope)」と呼ばれる使える範囲があります。簡単にいうと、その変数が「どこから見えるか」「どこで使えるか」を決めるルールです。

スコープには主に2つの種類があります。それが、ローカル変数(local)とグローバル変数(global)です。

2. ローカル変数とは?

2. ローカル変数とは?
2. ローカル変数とは?

ローカル変数とは、関数の中で使われる変数のことです。その関数の中だけで使えるようになっています。

例えば、次のようなコードを見てみましょう。


def greet():
    name = "たろう"
    print("こんにちは、" + name + "さん")

この例では、変数nameは関数greet()の中だけで使えます。関数の外からはnameを使うことはできません。

3. グローバル変数とは?

3. グローバル変数とは?
3. グローバル変数とは?

グローバル変数は、関数の外で作られた変数です。プログラム全体で使うことができます。


message = "おはよう"

def show_message():
    print(message)

show_message()

このコードではmessageは関数の外で作られているので、どの関数の中からでもアクセスできます。これがグローバル変数です。

4. なぜスコープが重要なの?

4. なぜスコープが重要なの?
4. なぜスコープが重要なの?

スコープを理解することはとても大切です。なぜなら、プログラムを作っていくうちに、同じ名前の変数が複数出てくることがあるからです。

もし変数がどこでも使えると、思わぬところで値が変わってしまったり、バグ(不具合)が起きたりしてしまいます。

スコープをしっかり理解しておくと、「この変数はここだけで使える」とわかるので、安全でわかりやすいプログラムが書けます。

-

5. ローカル変数とグローバル変数がぶつかったら?

5. ローカル変数とグローバル変数がぶつかったら?
5. ローカル変数とグローバル変数がぶつかったら?

同じ名前の変数がローカルとグローバルで使われていた場合、Pythonはローカル変数を優先します。


message = "こんにちは"  # グローバル変数

def show():
    message = "こんばんは"  # ローカル変数
    print(message)

show()

こんばんは

このように、関数の中で同じ名前の変数を使うと、外側のグローバル変数は無視されてしまいます。

6. グローバル変数を関数の中で使いたいとき

6. グローバル変数を関数の中で使いたいとき
6. グローバル変数を関数の中で使いたいとき

関数の中でグローバル変数を変更したい場合には、globalというキーワードを使います。


count = 0

def add():
    global count
    count = count + 1

add()
print(count)

1

globalと書くことで、「この変数はグローバルだよ」とPythonに教えることができます。ただし、使いすぎるとプログラムが複雑になるので注意しましょう。

7. スコープを理解してエラーを防ごう

7. スコープを理解してエラーを防ごう
7. スコープを理解してエラーを防ごう

スコープを正しく理解していないと、「変数が定義されていません」などのエラーに出会うことがあります。


def test():
    name = "さくら"

print(name)

NameError: name 'name' is not defined

これは、変数nameが関数の中だけで使えるローカル変数だからです。関数の外では使えません。

8. スコープは箱のようなもの

8. スコープは箱のようなもの
8. スコープは箱のようなもの

スコープは「箱(はこ)」のようなものと考えるとイメージしやすいです。ローカル変数は小さな箱の中だけで使えるメモです。グローバル変数は、大きな箱の中に入っていて、みんなが見える場所にあるメモです。

変数が見える場所を意識するだけで、Pythonのコードはずっとわかりやすくなります。

9. どちらを使えばいいの?

9. どちらを使えばいいの?
9. どちらを使えばいいの?

基本的には、ローカル変数を使うのがおすすめです。ローカル変数は関数の中で完結しているため、他の場所に影響を与えにくいです。

グローバル変数は、どうしても関数の外とつながる必要があるときにだけ使うようにしましょう。

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

関連記事:
カテゴリの一覧へ
新着記事
Pythonのエラーメッセージの読み方!よくあるエラーと解決方法
PHPの関数(function)の基本を完全ガイド!初心者でもわかる使い方
Pythonの条件式でNoneを判定する方法!is None vs == None の違い
Pythonのpass文とは?一時的なコードブロックをスキップする方法
人気記事
No.1
Java&Spring記事人気No1
PHPとは?初心者向けにわかりやすく解説
No.2
Java&Spring記事人気No2
PHPの配列をソートする方法!sort, rsort, asort, ksortの使い方を丁寧に解説します!
No.3
Java&Spring記事人気No3
PHPの関数(function)の基本を完全ガイド!初心者でもわかる使い方
No.4
Java&Spring記事人気No4
PHP の文字列の基本操作(連結・切り出し・長さ)の使い方
-