ChatGPTで学ぶPython関数とスコープ入門

スキル・キャリア

Pythonを学んでいると、「変数が使えない」「どこで定義したかわからなくなった」といった悩みにぶつかることがあります。

この記事では、初心者がつまずきやすい「スコープ(変数の有効範囲)」について、ChatGPTやGoogle Colabを使いながら学べるように、わかりやすく解説します。

▶ 前回の記事はこちら:
👉 ChatGPTで学ぶPython関数の引数応用入門


スコープとは?意味を簡単に理解しよう

スコープとは、「その変数が使える範囲」のことです。

Pythonでは、どこで変数を作ったかによって、どこで使えるかが決まります。これを知らないと、以下のようなエラーに出会うことがあります。

print(x)  # NameError: name 'x' is not defined

これは「x が定義されていない=スコープの外にある」という意味です。


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

Pythonのスコープには、主に2つの種類があります。

ローカル変数

ローカル変数は、関数の中でだけ使える変数のことです。
関数の外からは見えません(使えません)。

def greet():
    name = "たろう"  # ← ローカル変数
    print("こんにちは、" + name + "さん")

greet()

print(name)  # → エラー!nameは関数の外では使えない

  • name は関数の中だけの存在です。

グローバル変数

グローバル変数は、関数の外で作った変数のことです。
関数の中でも「読む」ことができます。

name = "さくら"  # ← グローバル変数

def greet():
    print("こんにちは、" + name + "さん")  # → OK!

greet()

  • 関数の中でグローバル変数を書き換えたいときは注意が必要です。

スコープに関する具体的なコード例

Google Colab で試せる「スコープ(変数の有効範囲)」に関するコード例を紹介します。

例:ローカル変数は関数の中だけで使える

def show_name():
    name = "たろう"  # ローカル変数
    print("こんにちは、" + name + "さん")

show_name()

# 関数の外で使おうとするとエラー
print(name)  # NameError: name 'name' is not defined

例:グローバル変数は関数の中でも読める

age = 25  # グローバル変数

def show_age():
    print("年齢は", age, "歳です")  # グローバル変数を参照

show_age()  # OK

例:関数内でグローバル変数を書き換える(global)

count = 0

def increment():
    global count  # グローバル変数を使う宣言
    count += 1

increment()
print(count)  # 出力: 1

global を使わずに書き換えようとすると、エラーになります。
グローバル変数を「読み込むだけ」ならOKですが、「書き換え」は global が必要です。

count = 0

def wrong_increment():
    count += 1  # UnboundLocalError

wrong_increment()

例:同じ変数名でもローカルとグローバルで別物

Pythonでは、同じ変数名でもスコープによって意味が変わるため、正しく理解しましょう。

コード例

x = 100 # グローバル変数

def change():
x = 50 # ローカル変数(別物)
print("関数内のx:", x)

change()
print("関数外のx:", x)

実行結果

関数内のx: 50
関数外のx: 100

同じ「x」でも、関数の中と外では別の変数として扱われています。
これがスコープの基本的な考え方です。


ChatGPTでスコープを理解する方法

ChatGPTは、スコープに関する疑問を丁寧に答えてくれるパートナーです。

🔸 質問の例:

  • 「この変数が使えないのはなぜ?」
  • 「グローバルとローカルの違いを教えて」
  • 「このエラーの原因はスコープの問題ですか?」

Colabで試したコードがうまく動かないときは、エラーとコードをそのままコピーしてChatGPTに貼ると、すぐに原因がわかることも多いです。


よくあるエラーと対処法まとめ

エラー原因対処法
NameError変数がスコープ外定義場所を見直す
UnboundLocalError関数内でグローバル変数を上書きしようとしたglobal を使う、または別名を使う
値が変わらない関数の中で別の変数として扱われている変数名の重複に注意

まとめ|スコープを理解すれば関数がもっと使いやすくなる

  • スコープとは「変数の使えるエリア」のことです
  • ローカル変数は関数の中、グローバル変数は外で定義します
  • global を使えば、関数内から外の変数を書き換えられます
  • ChatGPTを活用すれば、原因不明のエラーにもすぐ対応できます

関数を使いこなすには、スコープの理解が欠かせません。Colabで試しながら、ぜひ少しずつ身につけていきましょう!


次回は、「Pythonのクラスとオブジェクト」について解説していきます。お楽しみに!

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