まず結論
関数の中で作った変数は、基本的に関数の外では使えません。
def make_message():
message = "こんにちは"
make_message()
print(message)
このコードは NameError になります。
message は関数の中で作られた名前だからです。
こんなときに読む記事です
次のようなところで止まった人向けです。
- 関数の中で作った変数を外で使えない
NameErrorが出る理由が分からない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 で渡しましょう。
3行まとめ
- 関数の中で作った変数は、基本的に関数の外から使えない。
- 変数には使える範囲がある。
- 外で使いたい値はreturnで返す。