01 / 07
表示ではなく、答えがほしい
ここまでの関数は、中で print して終わりだった。画面には出るけれど、その答えをあとで使えない。
税こみの値段を出す関数があったとして、その結果をさらに合計したいときはどうする? 関数から値を持ち帰ってもらう必要があるね。
def nibai(kazu): print(kazu * 2)nibai(5)実行結果
10
関数
INPUT · スライド
01 / 07
ここまでの関数は、中で print して終わりだった。画面には出るけれど、その答えをあとで使えない。
税こみの値段を出す関数があったとして、その結果をさらに合計したいときはどうする? 関数から値を持ち帰ってもらう必要があるね。
def nibai(kazu): print(kazu * 2)nibai(5)実行結果
10
02 / 07
関数の中で return(リターン)と書くと、そのうしろの値が呼んだ場所に返ってくるよ。
返ってきた値は、そこに書いてあるのと同じように扱える。print(nibai(5)) は、print(10) と書いたのと同じことだよ。
def nibai(kazu): return kazu * 2print(nibai(5))実行結果
10
03 / 07
返ってきた値は、変数に入れておける。一度受け取ってしまえば、ただの数だよ。
こうしておけば、あとから何度でも使える。ここが print との決定的なちがいなんだ。
def nibai(kazu): return kazu * 2kotae = nibai(5)print(kotae)print(kotae + 3)実行結果
10 13
04 / 07
変数に入れずに、式の中にそのまま書くこともできる。
関数を呼んだところが、返ってきた値に置きかわると思えばいい。nibai(5) + nibai(10) は 10 + 20 と同じだね。関数の答えを、そのまま別の関数に渡すこともできるよ。
def nibai(kazu): return kazu * 2print(nibai(5) + nibai(10))print(nibai(nibai(3)))実行結果
30 12
05 / 07
では return を書かない関数を呼ぶと、何が返るのか。None が返るよ。
None は第1章でやった「何も無い」を表す値だね。関数は必ず何かを返す——return を書かなければ None を返す、というのが Python の決まりなんだ。
def nibai(kazu): print(kazu * 2)kotae = nibai(5)print(kotae)実行結果
10 None
06 / 07
return にはもう1つ役目がある。そこで関数が終わるんだ。うしろに書いた行は実行されないよ。
これを使うと、if で分けて途中で返す書きかたができる。else を書かなくてもいいのは、return した時点で先に進まないからだよ。
def hantei(ten): if ten >= 60: return "ごうかく" return "ふごうかく"print(hantei(80))print(hantei(40))実行結果
ごうかく ふごうかく
07 / 07
返せるのは数だけじゃない。文字でも True / False でも、リストでも辞書でも返せるよ。
関数は「値を入れると値が出てくる箱」。この見かたができるようになると、プログラムを部品の組み合わせとして書けるようになる。
ただしここで、この章でいちばんつまずく場所が来る。print と return のちがいだよ。次のレッスンをまるごと使って、じっくり見よう。
def ijou(ten): return ten >= 60print(ijou(80))print(ijou(40))実行結果
True False