def foo(l=None, d=None):
return bar(*l, **d) # eg. bar(1, 2, 3, a=a, b=b)
入力:l
は、すなわちNone
とき同じパラメータに両方のリストと辞書を開梱
l = [1, 2, 3]
d = {'a': a, 'b': b}
foo(l=l, d=d)
問題が生じました。この呼び出しが行われます
私はリストとうまくdictの両方にNoneType
を処理するために
foo
に変更できますか何
foo(d={'a':a})
?
これは醜いです、これよりも良い方法がなければならない:
def foo(l=None, d=None):
if l is not None and d is not None:
return bar(*l, **d)
if l is not None:
return bar(*l)
if d is not None:
return bar(**d)
*より良い*方法は、単にリストと辞書の引数を公開するラッパー関数 'foo'を持っていないだろう。変数/キーワードの引数を持つ場合は、関数のシグネチャにその変数を公開するだけで、ユーザーは使用できることを知ることができます。 – poke
'lがNoneではなく、dがNoneでない場合:'醜いですが、もしlとdの場合: –