カテゴリ: Python 更新日: 2026/03/01

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における変数スコープの考え方について、ローカル変数とグローバル変数を中心に丁寧に確認してきました。 変数スコープとは、変数がどの範囲で使えるのかを決める重要なルールです。 プログラミング初心者が最初につまずきやすいポイントでもあり、Pythonの基礎理解には欠かせない知識といえます。

ローカル変数は関数の中だけで使える変数であり、関数の外からは見えません。 そのため、処理のまとまりごとに安全に値を管理でき、思わぬバグを防ぐことができます。 一方で、グローバル変数はプログラム全体から参照できる便利な存在ですが、使い方を誤ると処理の流れが追いづらくなり、エラーの原因にもなります。

ローカル変数を使うメリット

ローカル変数を使う最大のメリットは、影響範囲が限定されている点です。 関数の中だけで完結するため、他の処理と変数がぶつかる心配がありません。 Pythonのプログラムでは、関数を組み合わせて処理を作ることが多いため、ローカル変数を意識するだけでコード全体の見通しが良くなります。

特に初心者のうちは、グローバル変数を多用せず、必要な値は引数として関数に渡し、結果を戻り値として受け取る書き方を心がけると理解が深まります。 これはPythonだけでなく、他のプログラミング言語でも役立つ考え方です。

グローバル変数を使うときの注意点

グローバル変数は、設定値や共通データを扱うときに便利ですが、数が増えるほど管理が難しくなります。 関数の中で値を書き換えてしまうと、どこで変数が変化したのか分かりにくくなります。 そのため、Pythonでは必要最低限にとどめることが大切です。

また、globalキーワードを使うときは、「本当にこの変数はグローバルである必要があるか」を一度立ち止まって考える癖をつけると、より読みやすいコードになります。

スコープを意識したサンプルプログラム


total = 0

def add_score(score):
    local_total = score
    return local_total

total = add_score(10)
print(total)

この例では、関数の中でローカル変数を使い、必要な結果だけを戻り値として返しています。 グローバル変数を直接書き換えずに処理することで、動作が分かりやすくなり、保守もしやすくなります。 スコープを意識した書き方は、Pythonの基礎文法を理解するうえで非常に重要です。

エラー防止と読みやすさにつながる考え方

変数スコープを理解していないと、定義されていない変数を使ってしまい、エラーが発生します。 しかし、どの変数がどこで使えるのかを常に意識していれば、こうしたミスは自然と減っていきます。 Pythonのエラーメッセージを見たときも、「この変数はどのスコープにあるのか」と考えることで、原因を素早く見つけられるようになります。

先生と生徒の振り返り会話

生徒「まとめてみると、変数が使える場所をちゃんと意識することが大切なんですね。」

先生「そうですね。スコープを理解すると、Pythonのコードが急に読みやすくなりますよ。」

生徒「ローカル変数を使えば、他の処理に影響しにくいのも分かりました。」

先生「その通りです。まずはローカル変数を基本にして、必要な場面だけグローバル変数を使うと良いですね。」

生徒「エラーが出たときも、スコープを考えると原因が見つけやすそうです。」

先生「ええ。変数スコープはPythonの基礎ですが、長く使える大事な考え方です。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Pythonの変数スコープとは何ですか?意味をわかりやすく教えてください

Pythonの変数スコープとは、その変数が「どこで使えるか」を示す範囲のことです。スコープを理解することで、エラーを防ぎやすくなります。

Pythonのローカル変数とグローバル変数の違いは何ですか?

ローカル変数は関数の中だけで使える変数で、グローバル変数は関数の外で定義されていて、プログラム全体で使える変数です。
コメント
コメント投稿は、ログインしてください

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

カテゴリの一覧へ
新着記事
New1
Python
Pythonのカスタム例外を作成する方法を完全解説!初心者でもわかる独自のExceptionクラス入門
New2
PHP
PHP の型変換を完全ガイド!初心者でもわかる明示的変換・自動変換
New3
PHP
PHPの真偽値と条件判定をやさしく解説!初心者でもわかるempty・isset・is_nullの使い方
New4
PHP
PHP の file_get_contents() を使ってファイルを読み込む方法!初心者でもできる簡単なファイル操作
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonのfinally文を徹底解説!例外発生時でも実行される処理の書き方と使い方
No.2
Java&Spring記事人気No2
Python
Pythonのクラスメソッドと静的メソッドの違いとは?初心者でも迷わない使い分けガイド
No.3
Java&Spring記事人気No3
Python
Pythonで辞書のネスト構造(入れ子辞書)を扱う方法 初心者向け完全ガイド
No.4
Java&Spring記事人気No4
Python
Pythonの書き方を基本から解説!はじめてのPythonプログラム
No.5
Java&Spring記事人気No5
Python
Pythonで文字列が数値か判定する方法!isdigit()・isnumeric()の違い
No.6
Java&Spring記事人気No6
Python
Pythonのコンストラクタ(__init__)の使い方!初心者でもわかるオブジェクトの初期化
No.7
Java&Spring記事人気No7
PHP
初心者向けPHP の MySQL のデータを更新する方法(UPDATE 文)完全ガイド
No.8
Java&Spring記事人気No8
PHP
PHPの可変長引数(...$args)の使い方を完全ガイド!初心者でもわかる基本と活用方法