ヨシ!

今日もご安全に!

pythonのkwargsの利点、欠点

自分でパッケージを作る際にkwargsの利用は、どのケースで便利なのか考えた。

def func_a(a=1, b=2):
    return a + b

print(func_a()) # 3

# func_aをラップして何かをする
def func_a_cus(c=3, **kwargs):
    a_b = func_a(**kwargs)  # アンパックして渡すから引数名と同じkeyの値が入る
    return a_b + c

print(func_a_cus()) # 6
print(func_a_cus(a=2, b=2)) # 7

kwargsを使えば補完は効かなくなるが、func_aの引数変更時に、func_a_cusは関数の引数を書き直す必要がない。

使う側がこの関数に精通していれば 便利。 まず、ベースとなる機能があって、そのバリエーション対応には便利だと思う

逆に、利用者は何が設定できるのかが分からなくなる 外部に露出しない部分で使うか、ドキュメントを用意した方が良い。

matplotlibは matplotlib.axes.Axes.bar — Matplotlib 3.3.3 documentation このパターンだが、pycharmだと何を設定すればいいのかがドキュメント見ないと分からないのは面倒。 できれば、IDE内でわかるようになって欲しい。

参考文献

docs.python.org