Pythonのスコープとreturn:変数の有効範囲と戻り値の仕組み

今日は関数の中でも少し難しい概念、**スコープ(変数の有効範囲)return(戻り値)**を学びました。特に戻り値は、完全に理解できていない部分もあるので、ここで整理しておきます。

スコープ:変数が使える範囲

Pythonの変数には、**その変数が使用できる範囲(スコープ)**があります。

ローカルスコープ(関数内の変数)

関数の中で定義した変数は、その関数の中でしか使えません

def greet():
    message = "こんにちは"  # 関数内で定義
    print(message)

greet()  # こんにちは

# ❌ エラー:関数の外からは使えない
print(message)  # NameError: name 'message' is not defined

message は関数 greet() の中でしか存在しないローカル変数です。

グローバルスコープ(関数外の変数)

関数の外で定義した変数は、プログラム全体で使えます

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

def greet():
    print(message)  # 関数内からも参照できる

greet()  # こんにちは
print(message)  # こんにちは(関数外でも使える)

グローバル変数は、関数の内外どちらからでもアクセスできます。

なぜスコープが重要か

スコープの概念は、変数名の衝突を防ぐためにあります。

count = 10  # グローバル変数

def increment():
    count = 0  # ローカル変数(グローバルのcountとは別物)
    count += 1
    print(f"関数内: {count}")

increment()  # 関数内: 1
print(f"関数外: {count}")  # 関数外: 10

関数内の count と関数外の count は別の変数として扱われます。

return:関数から値を返す

return は、関数の処理結果を呼び出し元に返すための命令です。

returnなしの関数

def add(a, b):
    result = a + b
    print(result)

add(3, 5)  # 8(画面に表示されるだけ)

この関数は結果を表示するだけで、値を返していません。

returnありの関数

def add(a, b):
    result = a + b
    return result

answer = add(3, 5)
print(answer)  # 8

return を使うことで、計算結果を変数に代入したり、他の処理に使えるようになります。

戻り値の活用例

def calculate_tax(price):
    tax = price * 0.1
    return tax

# 戻り値を使って、さらに計算できる
item_price = 1000
tax_amount = calculate_tax(item_price)
total = item_price + tax_amount

print(f"合計: {total}円")  # 合計: 1100円

returnのもう1つの性質:処理の終了

return には、関数の処理を終了させる性質もあります。

def check_age(age):
    if age < 18:
        return "未成年"
    
    if age < 65:
        return "成人"
    
    return "高齢者"

print(check_age(15))  # 未成年
print(check_age(30))  # 成人
print(check_age(70))  # 高齢者

return が実行されると、その時点で関数が終了し、それ以降のコードは実行されません。

def sample():
    print("1番目")
    return
    print("2番目")  # これは実行されない

sample()
# 出力: 1番目

まだ理解しきれていないこと:戻り値の本質

今日の学習で、戻り値の使い方は分かりました。しかし、「なぜreturnが必要なのか」「printとの違いは何か」がまだ完全に腑に落ちていません。

疑問点

  • print() で結果を表示するだけではダメなのか?
  • 戻り値を受け取らないとどうなるのか?

これは、もっと複雑なプログラムを書くうちに理解が深まる部分だと思います。今は「関数から値を返すにはreturnを使う」と覚えておきます。

今日の学びのポイント

  • スコープ: 変数が使える範囲
    • ローカル変数:関数内でのみ有効
    • グローバル変数:プログラム全体で有効
  • return: 戻り値を呼び出し元に返す
  • return: 関数の処理を終了させる
  • 戻り値の本質的な理解は、今後の課題

スコープとreturnは、関数を使いこなす上で欠かせない概念です。完全に理解できていない部分もありますが、実際にコードを書きながら少しずつ慣れていきます。


コメント