01 / 07
カンマで並べる
受け取る名前は1つとは限らない。カンマで区切って並べると、いくつでも受け取れるよ。
呼ぶときも同じようにカンマで並べる。1つ目に渡した値が1つ目の名前に、2つ目が2つ目の名前に入るよ。
def tashizan(a, b): return a + bprint(tashizan(2, 3))print(tashizan(100, 250))実行結果
5 350
関数
INPUT · スライド
01 / 07
受け取る名前は1つとは限らない。カンマで区切って並べると、いくつでも受け取れるよ。
呼ぶときも同じようにカンマで並べる。1つ目に渡した値が1つ目の名前に、2つ目が2つ目の名前に入るよ。
def tashizan(a, b): return a + bprint(tashizan(2, 3))print(tashizan(100, 250))実行結果
5 350
02 / 07
ここが最大の注意点。渡した値は書いた順に入る。順番を入れかえると、別のことをしてしまうよ。
下の waru(10, 2) は 10 / 2、waru(2, 10) は 2 / 10。同じ関数を同じ値で呼んでいるのに、答えがまるで違うね。
def waru(a, b): return a / bprint(waru(10, 2))print(waru(2, 10))実行結果
5.0 0.2
03 / 07
a と b では、どちらが何なのか読み取れない。受け取る名前を意味のある言葉にすると、順番のまちがいがぐっと減るよ。
kingaku(tanka, kosuu) なら、単価が先で個数があとだと読める。名前はコメントのかわりになるんだ。
def kingaku(tanka, kosuu): return tanka * kosuuprint(kingaku(150, 3))実行結果
450
04 / 07
受け取る名前が2つなら、渡すのも必ず2つ。1つしか渡さないと TypeError で止まるよ。
エラーのうしろに足りない名前が出るので、どれを渡し忘れたのかすぐ分かるね。
def tashizan(a, b): return a + bprint(tashizan(2))実行結果
TypeError: tashizan() missing 1 required positional argument: 'b'
05 / 07
3つでも4つでも、カンマで並べるだけ。増えても書きかたは変わらないよ。
ただし多すぎると、呼ぶ側が順番を覚えきれなくなる。3つくらいまでにしておくと読みやすいコードになるよ。
def shiharai(tanka, kosuu, souryou): return tanka * kosuu + souryouprint(shiharai(150, 2, 300))実行結果
600
06 / 07
渡すものは1つの数や文字でなくていい。リストもまるごと1つの引数として渡せるよ。
下の例は、点数のリストと基準の点をいっしょに渡して、基準以上が何人いるかを数えている。データと条件を別々に渡すと、同じ関数を基準を変えて何度でも使えるね。
def nannin(tens, kijun): kazu = 0 for ten in tens: if ten >= kijun: kazu += 1 return kazuprint(nannin([80, 55, 90], 60))print(nannin([80, 55, 90], 85))実行結果
2 1
07 / 07
辞書を渡せば、1件ぶんのデータをまとめて渡せる。名前・点数・住所と項目が増えても、引数は1つのままだよ。
これで「渡す」と「返す」がひととおりそろった。関数はもう、あなたの道具だよ。
次のグループでは、関数の中で作った変数が外から見えないという仕組み(スコープ)と、名前を書いて渡す書きかた、渡されなかったときの値を見ていくよ。
def shoukai(hito, kotoba): return f"{hito['namae']}さん、{kotoba}"print(shoukai({"namae": "ゆい", "ten": 80}, "こんにちは"))実行結果
ゆいさん、こんにちは