【Python】自前で関数を作る理由と作法【定義・パラメータ・戻り値を学ぶ】

ケンケン
今日は関数について勉強するよ
ミケ
関数って前に勉強した気が・・・
ケンケン
うん、print関数とか勉強したね。でも、今回は、その関数を作っちゃおうという話なんだ
ミケ
関数を作る!!!なんだか難しそう^^;
ケンケン
そんなことないよ。手順を踏めば難しくないし、関数を作れるとプログラミングの幅も広がるよ!
ミケ
そうなんだ!挑戦してみたい!
ケンケン
それじゃいってみよう!

そもそも関数って何だろう?

関数の定義を知らない人も多いのではないでしょうか。

覚えなくても支障はないのですが、せっかくなので定義から見ていきましょう。

関数の定義

簡単に言うと、何かを処理してくれるプログラム内の部品のことです。

「何か」のところに、数値の計算だったり、印刷の命令だったり、が入ります。

 

例えば、数値の計算という命令をパソコンにやってもらうための装置を想像してください。

 

①人間が関数にやってほしい計算をお願いします。
②すると、関数は受け取った命令を計算します。
③そして、出てきた答えを人間に返します。
これが関数の仕組みです。
①を入力・結果を出力と言ったりします。

自前で関数を作る意味

さて、関数の仕組みが分かったところで、その関数を自分で作ることに意味があるのでしょうか。
関数は、処理したいひとかたまりの部品のことでしたね。

 

ということは関数に頼らずとも自分でやりたい処理を直接プログラムで書きこめば済む、とも言えます。
先ほどの例だと、数値を加算してくれる関数を使わなくても、
プログラム上で4+5を直接表現できれば問題ないわけです。

 

では、なぜ関数を使うのかというと、処理をまとめて行いたいからです。
同じ処理を複数回行う時に、わざわざ同じコードを重複して使うことは好ましくありません。
そこで、関数のようにパッと呼び出してサクッと計算してくれるものが重宝するのです。
既存の関数を使っている内は特にこれらを意識する必要はないかもしれません。
文字列を書き出したい場合はprint関数を使えばいい、という知識さえあればいいですからね。

 

しかし、これからプログラミングを進めていく過程で、自分で関数を作らなくてはいけないときがきます。

 

先ほども話しましたが、関数の必要性が増すのはまとめて処理をしたいときです。
プログラムの規模が少し大きくなると、どうしても同じような処理が多くなります。

 

同じコードを何回も書いていると手間がかかりますし、
途中で処理の仕方が変わった場合、該当箇所すべて変更しなければならずミスが多くなります。
そんなときに、自前で関数を作成できれば、同じ処理はすべて関数で処理してしまうことができ、
コードを書く手間もミスも減ります。

関数の作り方

関数の作り方は意外に簡単です。

一例をお見せします。

最もシンプルな関数の作り方

▶関数の定義

def 関数名():

  処理内容

 

これがもっともシンプルな関数の形です。

 

defはdefinitionの頭の3文字を取ったものです。definitionは定義という意味です。

これを宣言することで、Python側にこれから関数を作るよと伝えています。

 

それでは、実際にコードを書いて関数を作ってみましょう。

▶関数の作り方

import datetime

now = datetime.datetime.now()
month = now.month
day = now.day

def schedule():
    print('ケンケンさんの'+ str(month) + '月'+ str(day) + '日の予定')
    
schedule()
def以下が関数です。
内容は簡単で、print関数を使い事前に用意した文字列を出力するものです。
最終行の「schedule()」で関数を呼び出して実行しています。
実行結果は以下のようになります。

引数を受け取る関数の作り方

▶関数の定義(パラメーター付)

def 関数名(パラメーター):

  処理内容

関数には引数というものがありました。
例えば、print関数でいうと()内の文字列のことを引数といいました。
この引数を関数側で受け取るわけですが、受け取るときに必要なのがパラメーターなのです。
引数の値を受け取る変数と考えておけばいいでしょう。
ちなみに、パラメーターはカンマ(,)で区切ると2つ以上設定できます。

 

以下のようにコードを書いて実行してみましょう。

▶関数の作り方(パラメーター付)

def schedule(month, day):
    print('ケンケンさんの'+ str(month) + '月'+ str(day) + '日の予定')
     
schedule(10, 12)
ちなみに、引数の順番とパラメーターの順番はリンクしています。
実行して先ほどと同じ結果になっていれば成功です。

 

戻り値ありの関数の作り方

▶関数の定義(戻り値あり)

def 関数名(パラメーター):

  処理内容

  return 戻り値

みなさん、戻り値はイメージできますか。
戻り値とは関数が処理した結果のことです。
「return 戻り値」の部分で関数内で計算した結果を呼び出しもとに返します。
戻り値は変数であることが多いです。
それでは、具体的にコードを書いて確認してみましょう。

▶関数の作り方(戻り値あり)

def schedule(month, day):
    res = 'ケンケンさんの{}月{}日の予定'.format(month,day)
    return res
    
show = schedule(10, 12)
print(show)
コードを実行すると先ほどと同じ結果になります。
戻り値がある場合は、呼び出しもとに戻り値を受け取る変数を用意します。
今回でいうとshowがそれに当たります。
関数のからくりはちょっと複雑で分かりづらいという方もいるので、以下のように
関数を呼び出して戻り値が返されるまでを図にしてみましたので参考にしてください。

まとめ

今回は、Pythonで関数を作るための作法をご紹介しました。

意外に簡単だったのではないでしょうか。

慣れるとプログラムをすっきり書くことができるようになり便利ですよ。

 

次回は、クラスについてご紹介します。

クラスはオブジェクトの設計図と言えるもので、これを理解するとさらに

プログラミングの世界が広がること間違いなしなのでお楽しみに!

それでは、また次回お会いしましょう。

次回記事

ケンケン みんなはクラスって知ってる? コタロウ 知ってます!僕らはケンケンクラスのメンバーです! ぺんぺん そうだね! ケンケン そのクラスとは違うんだな。。。 […]


ケンケン
関数の作り方分かったかな?
ミケ
分かりました!パラメータや戻り値が大事なんだね
ケンケン
そうなんだよ。あと計算の流れもマスターしておいてね。
ケロケロ
はーい!返り血の処理が大事なんだね!
ぺんぺん
それじゃ殺人事件!!

 

おすすめ記事