まず結論
関数の中で作った変数は、基本的に関数の外では使えません。
def make_message():
message = "こんにちは"
make_message()
print(message)
このコードは NameError になります。
message は関数の中で作られた名前だからです。
変数には「使える場所」があります。
イメージで考える
関数の中は、小さな部屋だと考えます。
部屋の中で作った message は、その部屋の中では使えます。
でも、部屋の外から直接その名前を呼ぶことはできません。
外で使いたい値は、return でドアの外へ渡します。
関数の中だけで使える
関数の中で作った変数は、その関数の中で使えます。
def say_hello():
message = "こんにちは"
print(message)
say_hello()
この場合、message は関数の中で使っているので問題ありません。
外で使いたいならreturn
関数の外で値を使いたいなら、return で返します。
def make_message():
message = "こんにちは"
return message
result = make_message()
print(result)
return された値を、外側の result に入れています。
同じ名前でも別の変数
関数の中と外で同じ名前を使っても、別の変数として扱われることがあります。
message = "外"
def show():
message = "中"
print(message)
show()
print(message)
中では "中"、外では "外" が表示されます。
読み方のコツ
関数の中は、小さな部屋のようなものです。
その部屋で作った変数は、外から直接見えないと考えると分かりやすいです。
外で使いたい結果は、return で渡しましょう。
手を動かすミニ練習
関数の中と外で、同じ名前の変数を表示してみましょう。
message = "外"
def show():
message = "中"
print(message)
show()
print(message)
関数の中で作った message と、外の message は別のものとして扱われます。
3行まとめ
- 関数の中で作った変数は、基本的に関数の外から使えない。
- 変数には使える範囲がある。
- 外で使いたい値はreturnで返す。
ここまでの確認
- 関数は処理に名前を付けるものだと分かる
- 引数とreturnの役割を分けられる
- Noneが値として返る場面を見分けられる