alt text

関数① 引数と戻り値


関数は、英語で「function(ファンクション)」といい、『機能』と訳すよ。複数の処理を一つの機能としてまとめて名前をつけておくことで、その名前を呼ぶだけでいつでも使うことができるよ!!

①関数の書き方

構文はこんな感じ。関数の内容を書く部分と、実際に関数の機能を使う部分に分かれるよ!

# 関数の内容を書く部分
def 関数名():
    関数の機能の内容

# 関数の機能を使う部分
関数名()

この、()の部分に何も書かなくていいの?という疑問は、後半で()の中に書くバージョンが出てくるのでご心配なく。まずは書かないバージョンをやってみよう。

試しに一つ関数を書いてみよう。

②引数(ひきすう)

引数は、関数をもっと便利にする使い方をするためのデータのこと。さっき気になっていた()の部分。

さっきのikemen()関数を見てみよう。いくらリッキーがイケメンだとはいえ、世の中ほかにもイケメンはいるよね。でもこのikemen関数は、だれが実行しても「リッキーイケメン」と表示されてしまうわけ。

そうじゃなくて、吉田さんが実行したら「吉田さんイケメン」、力さんが実行したら「力さんイケメン」と表示されるようにしたいよね。

改良したバージョンの関数を書いてみよう

# 関数の準備
def ikemen(namae):
    print(f"{namae}かっこいい")
    print(f"{namae}イケメン")
    print(f"{namae}ステキ")


# 関数を実行する
ikemen("吉田")

# 実行結果
# 吉田さんかっこいい
# 吉田さんイケメン
# 吉田さんステキ
# 力さんかっこいい
# 力さんイケメン
# 以下略

print(f"")の書き方、覚えてる??(忘れた人はここをチェック!)

引数の仕組みを図にするとこうなる。
alt text

一番上の「きれいなジャイアン」の図を見てみよう。ドラえもんのあの道具、「きこりの泉」ていう名前らしい。(参考:きこりの泉)
この泉にジャイアンが落ちると、乱暴な性格もなおった、イケメンの「きれいなジャイアン」がでてくる、ていう道具(ほんとはちょっと違うけど)なんだけど、これを引数なしの関数にしてみると

def kikorino_izumi():
    print("きれいなジャイアン")


kikorino_izumi()

という感じで、のび太が落ちようがスネ夫が落ちようが、無条件できれいなジャイアンが出てきてしまう道具になる。

これに引数をつけて

def kikorino_izumi(name):
    print(f"きれいな{name}")


kikorino_izumi("リッキー")
# 出力結果
# きれいなリッキー

とすると、のび太が落ちた時はきれいなのび太、スネ夫が落ちた時はきれいなスネ夫がでるわけ。

※注1:実行した時に与えるデータそのもの(上でいうとこの”リッキー”) のことを引数と呼ぶ場合もあれば、引数についた名前(name)のことを引数と呼ぶ場合もある。まあ結果的に一緒だけどね。
※注2:nameというのは、変数みたいなものだけど、この関数の中でだけ使えて、外では使えない!このへんの違いがあるから、意識的に変数ではなく引数と呼ぶようにしよう!

③戻り値(返り値)

今の状態では、関数は全部print文を使っているから、問答無用でprintされてしまうけど、実際のプログラミングでは、printというのは別の目的で使われることが多い。
printはあくまで、「今このプログラムうまく出来てるかな?printして確認しよう」という、確認(=デバッグ)のために使うことがほとんど。あくまでプログラミングの練習段階でprintすると結果がわかりやすいから使っているだけ。
関数に引数を渡して、その結果をprintせずに、その後のコードで使いたい場合はどうしたらいいか。そこで活躍するのが戻り値(もどりち) という考え方。(返り値=かえりち ともいうけど、「返り血」みたいで物騒な感じがするのでリッキーは「戻り値」派です。)

まずは、戻り値を使わない、printする関数を書いてみよう。