自作モジュール
このレッスンでできるようになること。自分で書いた .py ファイルをモジュールとして import し、ファイルをまたいで関数を使えるようになります。
自分のファイルもモジュールになる
import math で標準モジュールを読み込めたのと同じ仕組みで、自分で書いた Python ファイルも読み込めます。kakeibo_calc.py というファイルを置けば、import kakeibo_calc と書くだけでその中の関数と変数が使えます。拡張子の .py は付けません。
import kakeibo_calc
print(kakeibo_calc.with_tax(1000))
print(kakeibo_calc.TAX_RATE)関数だけでなく、モジュールの一番外側に書いた変数も モジュール名.変数名 で読めます。消費税率のような、複数の場所から参照される値を1か所にまとめられるということです。
import が探す場所
import はファイルを自動では探し出しません。決められた場所のリストを上から順に見ていきます。このリストは sys.path という変数に入っていて、先頭に "" を入れておくと今いるフォルダも探してくれるようになります。今回はこの1行を最初に置いてから始めます。
今回書くもの
家計簿の計算だけを kakeibo_calc.py に切り出します。中身は税率 TAX_RATE、税込金額を返す with_tax、支出リストの合計を返す total の3つです。この演習では、その中身を文字列として用意してファイルに書き出し、書いたそばから import して使います。ふだんはエディタでファイルを作りますが、やっていることは同じです。
税込計算は amount * 1.1 のように小数を掛けると 934.9999... のような誤差が出ます。整数のまま amount + amount * 10 // 100 と書けば誤差は出ません。金額はできるだけ整数で扱うのが安全です。
要件
- kakeibo_calc.py を書き出してから import すること
- with_tax は整数だけで計算し、amount + amount * TAX_RATE // 100 の形にすること
- with_tax(1000) の結果と total(expenses) の結果をこの順に1行ずつ print すること
入出力例
出力: "1100
1330"ヒント
編集 LuaGate編集部