**kwargs の素晴らしさについて最近学び始めたばかりですが、つまずきにぶつかりました。キーワード引数を受け付けない関数に辞書のキーワードを送る方法はありますか? 次の簡単な設定を検討してください。
def two(**kwargs):
return kwargs['second']
def three(**kwargs):
return kwargs['third']
parameterDict = {}
parameterDict['first'] = 1
parameterDict['second'] = 2
parameterDict['third'] = 3
次のスタイルでインターフェイスする外部コードを使用します。
fitObject = externalCode(two, first=1, second=2)
問題は次のとおりです。「externalCode」は **kwargs を受け入れないため、辞書情報を受け入れ可能な形式にするスマートな方法はありますか?
また、さまざまな関数が parameterDict のさまざまなサブセットをパラメーターとして受け取ります。したがって、関数 "two" は "first" と "second" のパラメーターを受け入れる可能性がありますが、"three" は拒否します。そして "three" は 3 つすべてを受け入れます。
- - - - - - - - - - - - - - - - - - - 編集 - - - - - - -------------------------
人々は、上記のコードは失敗しないと正しくコメントしています。そのため、私は自分の問題を把握しましたが、再投稿する価値があるかどうかはわかりません。私はこのようなことをしていました:
def printHair(**kwargs):
if hairColor == 'Black':
print 'Yep!'
pass
personA = {'hairColor':'blue'}
printHair(**personA)
NameError: global name 'hairColor' is not defined
そして、どうやら修正は、最初に printHair(hairColor, **kwargs) を定義するときに明示的に hairColor を含めることです。