大きな Python 関数を小さな関数にリファクタリングしたいと考えています。たとえば、次のコード スニペットを考えてみましょう。
x = x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9
もちろん、これは些細な例です。実際には、コードはより複雑です。私のポイントは、抽出された関数に渡す必要がある多くのローカルスコープ変数が含まれているということです。これは次のようになります。
def mysum(x1, x2, x3, x4, x5, x6, x7, x8, x9):
x = x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9
return x
問題は、Pylint が引数が多すぎるという警告をトリガーすることです。
次のようなことを行うことで、警告を回避できます。
def mysum(d):
x1 = d['x1']
x2 = d['x2']
...
x9 = d['x9']
x = x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9
return x
def mybigfunction():
...
d = {}
d['x1'] = x1
...
d['x9'] = x9
x = mysum(d)
しかし、このアプローチは私には醜いです。冗長でさえある多くのコードを書く必要があります。
それを行うより良い方法はありますか?