functools モジュールの partial メソッドを使用して、関数を値の範囲にマップしています。
def basic_rule(p,b,vx=1,**kwargs):
return (p / b) if vx != 0 else 0
def rule5(func,**kwargs):
vals = map(functools.partial(func,**kwargs), range(1,kwargs['b']+1))
return [x for i,x in enumerate(vals[:-1]) if x >= vals[i+1]] == []
rule5(basic_rule,p=100,b=10000)
5行目で発生するエラーは次のとおりです。
----> return map(functools.partial(func,**kwargs), range(1,kwargs['b']+1))
TypeError: basic_rule() got multiple values for keyword argument 'p'
functools.partial は、既に値を割り当てているにもかかわらず、範囲を引数 p に割り当てようとしているようです。範囲を vx の値に割り当てようとしています。どうすればそれを実現できるか考えていますか?
編集:コードに余分なコンテキストを少し追加しました。基本的にテスト 5 でやりたいことは、与えられた関数の結果が vt が上がるにつれて増加することを確認することです。 =n)。