引数とは
関数を使い複数の消費税計算を1つにできます(共通処理)。しかし消費税計算の対象は1,000円だったり、500円だったりと無数にあります。これを計算するため1,000円用の関数、500円用の関数・・・と作成するのは不可能です。
そこで利用側から関数へ計算対象の値を受け渡し計算します。この受け渡す値を引数といいます。
通常関数を利用するには「関数名()」と記述します。そして値を受け渡したい場合は「関数名(値)」とします。
消費税計算で1,000円,500円を計算するには次のようになります。
1 2 |
tax(1000) tax(500) |
関数側では引数を受け取る変数を用意します。通常関数の定義は「def 関数名():]とします。引数を受け取るには「def 関数名(変数)」とし、変数で引数を受け取ります。
消費税計算の定義を次のようにすると変数priceに引数が保存されます。
1 |
def tax(price): |
プログラムで確認していきます。
1 2 3 4 5 6 |
def tax(price): print(price) result = int(price * 1.1) tax(1000) tax(500) |
5,6行目で関数taxを引数1000,500で呼び出しています。
5 6 |
tax(1000) tax(500) |
1行目で関数taxを定義しています。そして引数を変数priceで受け取っています。
1 |
def tax(price): |
受け取った引数を2行目で表示しています。
2 |
print(price) |
【実行結果】
複数の引数
引数は次のように複数記述できます。
1 2 3 4 5 |
def test(arg1,arg2,arg3): print(arg1,arg2,arg3) test("1回目",3,1000) test("2回目",5,3000) |
【実行結果】
4行目で3つの引数”1回目”,3,1000で関数testを呼び出しています。
4 |
test("1回目",3,1000) |
1行目の関数の定義は、引数の数に対応して3つの変数arg1,arg2,arg3を定義しています。
1 |
def test(arg1,arg2,arg3): |
引数は並び順に沿って変数に保存されます(arg1:”1回目”,arg2:3,arg3:1000)
省略値
消費税率は基本10%ですが、特定の物品(食料品など)は8%です。これを考慮し消費税計算を関数定義しました。
1 2 3 4 5 6 7 |
def tax(price,ritu): ans = int(price * (ritu / 100+1.0)) print(ans) tax(500,10) tax(700,10) tax(100,8) |
【実行結果】
関数定義で引数を税抜金額(price)、税率(ritu)と定義しています。
1 |
def tax(price,ritu): |
税抜金額、税率を引数として関数を呼び出しています。
5 6 7 |
tax(500,10) tax(700,10) tax(100,8) |
基本10%にもかかわらず、毎回10%を指定し関数を呼び出すのは面倒ですし、間違えの基になりそうです。対策として引数の省略値を設定できます。
10%を省略値とすると次のようになります。
1 2 3 4 5 6 7 |
def tax(price,ritu=10): ans = int(price * (ritu / 100+1.0)) print(ans) tax(500) tax(700) tax(100,8) |
【実行結果】
関数定義で引数rituを「ritu=10」とすることで、省略値が10%となります。
1 |
def tax(price,ritu=10): |
関数の呼び出しでは率が10%の場合は引数を省略し、それ以外は税率を設定します。
5 6 7 |
tax(500) tax(700) tax(100,8) |
キーワード指定
引数は並び順に従って定義した変数に保存されます。
これとは別に変数名を指定(キーワード)し、関数を呼び出すことができます。
プログラムで確認します。
1 2 |
def test(arg1,arg2): print(arg1,arg2) |
上記プログラムを次の方法で呼び出します。
1 2 3 |
test(10,20) test(arg2=10,arg1=20) test(2,arg2=55) |
1行目は通常の呼び出し方です。変数arg1に10、変数arg2に20が保存されます。
2行目は変数arg2、arg1をキーワード指定で呼び出しています。変数arg1に20,変数arg2に10が保存されます。
3行目は変数arg2のみキーワード指定で呼び出しています。変数arg1に2,変数arg2に55が保存されます。
【実行結果】
注意点としてキーワード指定の後ろに通常の引数があるとエラーになります。