Pythons *args
と**kwargs
を理解する上で助けが必要です。それはシンプルだけど、私は全部自分の頭を包んでいない。ここに私に驚くべきシナリオの1つがあります。可変長引数リストと名前付きパラメータを一緒に使用する
私は2つの関数mainfunc
とwrapperfunc
(main関数のラッパー関数)を持っています。それはこのように見えます。
def mainfunc(fname=None, lname=None):
print 'Firstname: ' + fname
print 'Lastname: ' + lname
def wrapperfunc(uname, *args):
print uname
mainfunc(*args)
私はこのようなwrapperfunc
を呼び出すことができます。
wrapperfunc('j.doe', 'john', 'doe')
をこの方法では、すべての3つのパラメータが位置しています。 j.doe
がuname
になるので、他の二つのparamsは、私はまだ直接wrapperfunc
内部uname
にアクセスし、次に渡すことができるように、辞書からwrapperfunc
へのparamsの一部を通過することが可能である..but *args
によってアクセスすることができます残りの位置パラメータはmainfunc
に送信されます。次のコードのような何か:私は直接wrapperfunc
内の名前付きパラメータへのアクセスが、mainfunc
に、すべての位置パラメータを渡したい
params = {'uname':'j.doe'}
wrapperfunc(**params, 'john', 'doe')
。
正確に何が必要なのかはっきりしません。より良い例を挙げてください –
あなたは 'wrapperfunc'の中で' uname'に直接アクセスし、残りのargsを 'mainfunc'に渡しています。説明してください。 –
私は編集をしました。見てください。私の質問に明快さの欠如のため申し訳ありません。 –