7:コレクションを引数にせずintやstrを受け取る

関数の引数にはどういった値を期待するのが良いでしょうか? 関数の引数を考えることは、関数の入力仕様を決めることなのでとても重要です。

次の関数は何が問題でしょうか?

具体的な失敗

def calc_tax_included(item, tax_rate=0.1):
    return item['price'] * (1 + tax_rate)

この calc_tax_included は引数に item (商品を表す辞書)を期待しています。 これでは単に「消費税を計算したい」という場合にも、毎度「 'price' キーを持つ辞書」を用意する必要があります。 関数の再利用性が低くなってしまいます。

ベストプラクティス

関数の引数は数値(int)や浮動小数点数(float)、文字列(str)など、 コレクション でない値を受け取るのが良いでしょう。

def calc_tax_included(price, tax_rate=0.1):
    return price * (1 + tax_rate)

辞書を受け取らずに数値で受け取る関数にすることで、単に消費税込みの金額を計算したい場合にも calc_tax_included 関数が使えます。

cover

(中略)詳細は書籍 自走プログラマー をご参照ください