【スタラボPython道場②】Pythonで関数 を定義しよう!

この記事ではPythonで独自に関数を定義する方法を解説します。
関数の定義にはdefというキーワードを使用します。これは英語で定義するという意味を持つdefineの略です。

基本構文は以下の通りです。

def 関数名(引数1, 引数2, …, 引数n): 
    処理1
    処理2

関数名は小文字 + アンダースコア区切り

def の後につける関数名は自分で分かりやすいものをつけることが出来ます。
ただし複数の単語を使用する場合は、全小文字 + アンダースコア区切りを使用しましょう。
例) def my_data など

引数と処理は必要に応じて指定

引数は必要に応じて指定します。複数指定もできますし、一つも受け取らない関数もあります。

処理の内容は、インデントの範囲で複数行記述することができます。

関数の作成と呼び出し

実際に関数を作成して、呼び出してみましょう。

ここでは、牛乳とコップの購入個数に対応して、その二つの税込合計金額を計算する関数を作成します。文字で考えてみて混乱する場合は、適当な数値を入れてみると考えやすくなります。

例えば、1本200円の牛乳を5本、1個500円のコップを2個購入する場合の税込合計金額を返す関数を作る場合、
「def total_price(5,2) を実行したときに、合計金額2180円を返す関数」と考えてみましょう。

実際に数値を入れてみると、合計金額を計算する前に、牛乳とコップそれぞれの税込み金額を計算する処理が必要なことに気がつきます。

牛乳の税込金額とコップの税込金額を計算する処理は以下のように指定できます。
牛乳は食料品ですので消費税が8%、コップは10%です。

#牛乳の税込金額
price_milk=number_of_miik*1.08

#コップの税込金額
price_cup=number_of_cup*1.1

実際に関数の中にいれてみましょう。処理を指定する際は半角スペース4文字分のインデントを入れます。

def total_price(number_of_miik, number_of_cup):
    price_milk=number_of_miik*1.08
    price_cup=number_of_cup*1.1

次に、牛乳とコップそれぞれの税込金額の合計を計算する処理を書きます。

def total_price(number_of_miik, number_of_cup):
    price_milk=number_of_miik*1.08
    price_cup=number_of_cup*1.1
    total=price_milk + price_cup

これで関数が完成しました。実際に数値を入れて関数を呼び出してみます。

def total_price(number_of_miik, number_of_cup):
    price_milk=number_of_miik*1.08
    price_cup=number_of_cup*1.1
    total=price_milk + price_cup

total_price(5,2)

どうでしょうか?

実際に関数は問題なく完成しているはずなのに、何も表示されません。
実は、関数の結果を表示したい場合は、関数の最後に戻り値の指定をする必要があります。

return文で結果を返す

戻り値とは、関数が実行された結果の値のことです。(返り値と呼ぶ場合もあります)
関数の戻り値は return を指定して返します。return文の書き方は次の通りです。

return 値

return文を実行すると、値を関数の戻り値にして、関数の実行を終了します。return文より後ろの処理は実行されないので、return文は全ての処理の最後に指定するように気をつけましょう。return文を含めた関数がこちらです。

def total_price(number_of_miik, number_of_cup):
    price_milk=number_of_miik*1.08
    price_cup=number_of_cup*1.1
    total=price_milk + price_cup

    return total

# 牛乳5本、コップ2個の合計購入額を計算

total = total_price(5, 2)
print("合計は", total, "円です")
合計は2180円です

と表示されました。

いかがでしたか?難しく見える関数も、実際に数値を入れながら考えてみるととても簡単です。皆さんも自由に関数を定義して練習してみてくださいね。

プログラミング入門コースなら、講師と二人三脚で初心者をサポート/