に複数の値を得た私は、値の範囲を超える機能をマッピングするためにfunctoolsモジュールから部分的方法を使用しています:ここでfunctools.partial:TypeError例外:キーワード引数
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:functools.partialは、私はすでにそれに値を割り当てられているにもかかわらず、引数pの範囲を割り当てるしようとしているよう
----> return map(functools.partial(func,**kwargs), range(1,kwargs['b']+1))
TypeError: basic_rule() got multiple values for keyword argument 'p'
に見えます。範囲をvxの値に代入しようとしています。どのように私はそれが起こることができる任意のアイデア?
EDIT:コードに余分なコンテキストを少し追加しました。基本的にテスト5にしたいのは、vtが上がるにつれて関数の結果が大きくなるようにして、func(vt = 1)< func(vt = 2)... < func(vt = n)。それで部分は、元の関数を呼び出すことができ
arguments
格納位置引数keywords
格納全てのキーワードベースの引数
:
basic_ruleの '' kwargs''の目的は何ですか? –
ラムダの代わりに 'functools.partial()'を使っているのはなぜですか? –
vx!= 0 else 0'の場合は 'kwargs [" p "]/kwargs [" b "]に変更し、関数の署名を' basic_rule(vx = 1、** kwargs): 'に変更するとエラーは回避できますが、あなたの最終目標は –