関数

INPUT · スライド

答えを返してもらう

01 / 07

表示ではなく、答えがほしい

ここまでの関数は、中で print して終わりだった。画面には出るけれど、その答えをあとで使えない。

税こみの値段を出す関数があったとして、その結果をさらに合計したいときはどうする? 関数から値を持ち帰ってもらう必要があるね。

def nibai(kazu):    print(kazu * 2)nibai(5)

実行結果

10

02 / 07

return で返す

関数の中で 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 が返る

では return を書かない関数を呼ぶと、何が返るのか。None が返るよ。

None は第1章でやった「何も無い」を表す値だね。関数は必ず何かを返す——return を書かなければ None を返す、というのが Python の決まりなんだ。

def nibai(kazu):    print(kazu * 2)kotae = nibai(5)print(kotae)

実行結果

10
None

06 / 07

return に着いたら関数は終わる

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