01 / 06
手に入れた道具をならべる
この章で手に入れたものをならべてみよう。
def… ひとまとまりの処理に名前をつける- 引数 … 外から中へ値を渡す
return… 中から外へ値を返す- スコープ … 中で作った名前は中だけのもの
- キーワード引数と初期値 … 名前をつけて渡す、渡さなかったときの値を決める
文法はこれで全部。ここからはどう使うかの話だよ。同じ結果が出るコードでも、部品の切りかたで読みやすさはまったく変わるんだ。
関数
INPUT · スライド
01 / 06
この章で手に入れたものをならべてみよう。
def … ひとまとまりの処理に名前をつけるreturn … 中から外へ値を返す文法はこれで全部。ここからはどう使うかの話だよ。同じ結果が出るコードでも、部品の切りかたで読みやすさはまったく変わるんだ。
02 / 06
関数にするかどうかで迷ったときの、いちばん分かりやすい合図がこれ。同じような処理を2回書いた瞬間だよ。
2か所あると、直すときに2か所とも直さないといけない。片方だけ直して片方を忘れる——これがバグのいちばん太い水源だ。
下のコードは税込み計算を2回書いている。税率が変わったら2か所とも直すことになるね。
print(int(1000 * 1.1))print(int(2500 * 1.1))実行結果
1100 2750
03 / 06
関数にすると、直す場所が1つになる。税率を知っているのは関数の中だけになったので、呼ぶ側は税率のことを忘れていい。
「同じことを2回書いた」以外にも合図はある。コメントで説明したくなったときもそうだよ。「ここは税込みを計算している」と書きたくなったら、その部分を関数にして名前で説明すればいい。
def zeikomi(nedan): return int(nedan * 1.1)print(zeikomi(1000))print(zeikomi(2500))実行結果
1100 2750
04 / 06
関数の名前は、中を見なくても何が起きるか分かるものにしよう。
f shori data keisan2zeikomi hantei gassan tsunagu「何をするか」を動詞で言えるのがいい名前だよ。名前が決まらないときは、たいていその関数が2つ以上の仕事をしている。名前に困ったら、分けられないか考えてみよう。
Pythonでは小文字とアンダースコアで書く習慣がある。zeikomiKeisan ではなく zeikomi_keisan だよ。
05 / 06
よくやってしまうのが、計算と表示を1つの関数に詰めこむこと。
計算した結果を中で print してしまうと、その値は外に出てこない。合計を出したくなっても、並べかえたくなっても、もう使えないんだ。
計算する関数は return する。表示は呼んだ側でやる。 これを守るだけで、部品の使い回しがきくようになるよ。
def shoukei(tanka, kosuu): return tanka * kosuugoukei = shoukei(160, 2) + shoukei(220, 1)print(f"ごうけい {goukei}円")実行結果
ごうけい 540円
06 / 06
大きなプログラムを書くときは、小さい関数から作って、それを呼ぶ関数を作る。いきなり全部を1つの関数に書こうとしない。
下では shoukei が金額を出し、gyou がそれを使って1行ぶんの文字列を作っている。それぞれは短くて、それぞれ単体で確かめられる。
それじゃあ10問やってみよう。あとの問題ほど大きくなって、最後は関数をいくつか組み合わせた小さなプログラムになるよ。
def shoukei(tanka, kosuu): return tanka * kosuudef gyou(namae, tanka, kosuu): return f"{namae} x{kosuu} {shoukei(tanka, kosuu)}円"print(gyou("パン", 160, 2))実行結果
パン x2 320円