01 / 06
ずっと1つのファイルに書いてきた
ここまでのプログラムは、いつも1つのファイルの中で完結していた。短いうちは、それがいちばん楽だよね。
でも実際のプログラムは1ファイルには収まらない。関数が10個、クラスが3つ、データの用意に判定に表示…と積み上がっていく。数千行のファイルは、書いた本人でも目的の場所を見つけられないんだ。
モジュールと標準ライブラリ
INPUT · スライド
01 / 06
ここまでのプログラムは、いつも1つのファイルの中で完結していた。短いうちは、それがいちばん楽だよね。
でも実際のプログラムは1ファイルには収まらない。関数が10個、クラスが3つ、データの用意に判定に表示…と積み上がっていく。数千行のファイルは、書いた本人でも目的の場所を見つけられないんだ。
02 / 06
下は「値段のデータ」「合計の計算」「画面への表示」が同居している例。まだ10行ほどだけど、もう役割が3つ混ざっているのが分かるかな。
短いうちは、混ざっていても読める。困るのはここからだよ。
nedans = [120, 80, 250]goukei = 0for n in nedans: goukei += nfor n in nedans: print(f"- {n}円")print(f"ごうけい{goukei}円")実行結果
- 120円 - 80円 - 250円 ごうけい450円
03 / 06
大きいファイルがつらくなるのは、あとから手を入れるときだよ。
書いた本人でも、1週間たてば忘れている。ファイルが大きいほど、思い出すのに時間がかかるんだ。
04 / 06
では、どこで切ればいいんだろう。「100行を超えたら切る」ではなくて、役割で切るのがコツだよ。さっきの例なら3つに分けられるね。
まずは関数に分けてみる。名前を読めば中身が想像できるところまで分けられたら十分だよ。
def goukei(nedans): kotae = 0 for n in nedans: kotae += n return kotaedef hyouji(nedans): for n in nedans: print(f"- {n}円")nedans = [120, 80, 250]hyouji(nedans)print(f"ごうけい{goukei(nedans)}円")実行結果
- 120円 - 80円 - 250円 ごうけい450円
05 / 06
合計を出す処理は、買い物でも、テストの点数でも使える。でも1つのファイルに書きこんでしまうと、ほかのプログラムで使うにはコピーするしかない。
コピーは楽だけれど、まちがいが見つかったときに両方を直さないといけない。片方だけ直して食いちがうのが、いちばん見つけにくいバグだよ。
「1か所に置いて、どこからでも呼ぶ」ができれば、この悩みはまるごと消える。
06 / 06
ここからの演習では、エディタの上にファイルのタブが2枚並ぶよ。タップで切り替えられる。
実行ボタンを押したときに動きはじめるのは、いつも main.py のほう。もう1枚は、次のレッスンで中身をうつす置き場だよ。いまは空のままでいい。
まずは main.py の中で、役割ごとの関数に分ける練習をしよう。切り分けさえできていれば、ファイルを分けるのはすぐ終わるからね。