カテゴリ: Python 更新日: 2025/12/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の変数スコープとは、その変数が「どこで使えるか」を示す範囲のことです。スコープを理解することで、エラーを防ぎやすくなります。
コメント
コメント投稿は、ログインしてください

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

カテゴリの一覧へ
新着記事
New1
PHP
PHPのCookieセキュリティを完全ガイド!初心者でもわかるSecureとHttpOnlyの使い方
New2
PHP
PHPのCSRF対策を完全理解!トークンを使った安全なフォーム送信の仕組みを初心者向けに徹底解説
New3
PHP
PHPのSQLインジェクション対策を完全解説!初心者でも安全にデータベースを扱う方法
New4
PHP
PHPでカウントダウンタイマーを作る方法!初心者向けにやさしく解説
-
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonでテキストファイルを1行ずつ読み込む方法(readline() / readlines())
No.2
Java&Spring記事人気No2
PHP
初心者向けPHPでMySQLからデータを取得する方法(SELECT文)完全ガイド
No.3
Java&Spring記事人気No3
Python
Pythonのリストの重複を削除する方法を解説!初心者向けにsetとdict.fromkeysの使い方をやさしく説明
No.4
Java&Spring記事人気No4
Python
Pythonで経過時間を測る方法をやさしく解説!初心者向けtime.perf_counterとtime.sleepの使い方
No.5
Java&Spring記事人気No5
Python
PythonでExcelファイル(.xlsx)を操作する方法を徹底解説!初心者でもできるopenpyxl・pandasの使い方
No.6
Java&Spring記事人気No6
Python
Pythonでエラースタックトレースを表示・取得する方法を徹底解説!初心者向け例外処理入門
No.7
Java&Spring記事人気No7
PHP
PHPのXSS対策を完全ガイド!初心者でもわかる安全なWebアプリの作り方
No.8
Java&Spring記事人気No8
PHP
PHPのOAuth認証をやさしく解説!Google・Facebookログインを初心者向けに実装しよう
-
-