ゼロからのPython入門講座関数の定義

関数の定義

関数の定義関数のメリットローカル変数とグローバル変数関数の呼び出し方

れんしゅうもんだい では、こんな計算問題をやってもらいました。

太郎くんは、一つ100円のももを5つ、一つ40円のみかんを8つ買いました。全部でいくらになったでしょう?

この問題の発展形として、果物を買う個数を、事前に決まった定数ではなく、キーボードから入力できるようにしてみましょう。

  1. キーボードから、購入するももの個数を入力します。
  2. キーボードから、購入するみかんの個数を入力します。
  3. ももを一つ100円、みかんを一つ40円として、合計金額を出力します。
In [22]:
momo = input("ももは何個買いますか?")  # ももの個数を入力する
num_momo = int(momo) # 入力した文字列を、整数値に変換する

mikan = input("みかんは何個買いますか?") # みかんの個数を入力する
num_mikan = int(mikan) # 入力した文字列を、整数値に変換する

total_momo = num_momo * 100
total_mikan = num_mikan * 40
total = total_momo + total_mikan

print("もも", num_momo, "個と、みかん", num_mikan, "個で、", total, "円です")
もも 10 個と、みかん 20 個で、 1800 円です
  1. まず、ももの個数をinput()関数で入力します。input()関数の戻り値は文字列ですので、そのままでは金額の計算ができません。int()を使って、整数に変換し、変数 num_momo に代入しておきます。
    int() の使い方を忘れてしまった方は、文字列の数値化 を参照してください。

  2. 同様に、input() でみかんの個数を入力し、 int() で整数に変換して変数 num_mikanに代入します。

  3. ももの個数とみかんの個数から合計金額を計算し、変数 total に代入します。

  4. 計算した結果を出力します。

関数の定義

関数 では、Pythonに標準で用意されている関数の使い方を紹介しました。このような関数は、用意されたものを使うだけではなく、自分でも必要な関数を作れるようになっています。

ここでは、例として、上記の 3. の部分に相当する、ももとみかんの個数から合計金額を計算する部分を関数にしてみましょう。

関数は、次の形式で定義します。

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

関数名と引数の指定

関数定義は def 関数名(引数名1, 引数名2, ...): という行ではじまります。

関数名 には関数の名前、引数名1引数名2、... には、関数に指定する引数の名前を指定します。

この例では、関数の名前を fruit_price、引数で指定するももの個数を number_of_momo、みかんの個数を number_of_mimkan としてみましょう。

def fruit_price(number_of_momo, number_of_mikan):
    処理1
    処理2
    ...

この関数を呼び出すときは、購入するももの数とみかんの数を指定して、次のように記述します。

fruit_price(100, 200) # ももを100個、みかんを200個購入する

引数として指定されたももの個数 100 と、みかんの個数 200 は、それぞれ変数 number_of_momonumber_of_mimkan として参照できます。

関数本体

def 文に続いて、関数が呼び出されたときに実行する処理を記述します。この処理は、行の先頭にスペース4文字で インデント して記述します。

def 関数名(引数名1, 引数名2, ...):
    処理
^^^^
スペースを4文字入力

関数の処理として、ももとみかんの値段を計算する処理を書いてみましょう。

In [1]:
def fruit_price(number_of_momo, number_of_mimkan):
    total_momo = number_of_momo * 100
    total_mikan = number_of_mimkan * 40
    total = total_momo + total_mikan

return 文

この関数では、値段を計算して変数 total に代入しています。これで値段の計算はできましたが、このままではせっかく計算した値段はそのまま捨てられてしまいます。関数は、関数の呼び出し元に、処理結果となる値を、戻り値として返すことができます。

関数 で紹介した abs() 関数は、引数の絶対値を戻り値として返します。

In [2]:
abs(-100)
Out[2]:
100

これとおなじように、関数 fruit_price() を呼び出したときには、戻り値として、計算した合計金額を返すようにしましょう。

戻り値を返すようにすると、

print(fruit_price(100, 200))

fruit_price() 関数を呼び出せば、戻り値として返した合計金額が表示されるようになります。

関数の戻り値は、return 文で指定します。

次の例では、計算した値段である変数 total を戻り値として、return 文に指定しています。

def fruit_price(number_of_momo, number_of_mimkan):
    total_momo = number_of_momo * 100
    total_mikan = number_of_mimkan * 40
    total = total_momo + total_mikan

    return total

return 文は、次の形式で記述します。

return 

return 文を実行すると、指定した を関数の戻り値に設定して、関数の実行を終了します。return 文より後ろの処理は、実行されません。

関数の呼び出し

これで関数 fruit_price(number_of_momo, number_of_mimkan) が完成しました。つぎのようにして、呼び出してみましょう。

In [3]:
# 関数の定義

def fruit_price(number_of_momo, number_of_mimkan):
    total_momo = number_of_momo * 100
    total_mikan = number_of_mimkan * 40
    total = total_momo + total_mikan
    return total


# もも5個、みかん10個の値段を計算
total = fruit_price(5, 10)
print("もも 5個と、みかん 10個で、", total, "円です")
もも 5個と、みかん 10個で、 900 円です

変数とおなじように、定義した関数は別のセルでも利用できます。別の条件で fruit_price() を呼び出してみましょう。

In [24]:
# もも100個、みかん200個の値段を計算
total = fruit_price(100, 200)
print("もも 100個と、みかん 200個で、", total, "円です")
もも 100個と、みかん 200個で、 18000 円です


【Copyright © 2001-2020 python.jp】 【Privacy Policy】 python_japan