2017-03-19 3 views
0

申し訳ありませんが、これは愚かな質問かもしれませんが、あまりにもPythonに精通していません。泡クライアントでSudsクライアントはパラメータとして渡しても動作しませんが、kwargsで動作します

は、私はこれを使用してクライアントのメソッド呼び出しに引数を渡す場合:これは正常に動作します

kwargs = {'username': username, 'password': password, 'type': '', } 

response = client.service.Login(**kwargs) 

。しかし、私が使用する場合:

response = client.service.Login({'username': username, 'password': password, 'type': '', }) 

これは機能しません、違いを説明してください誰かがなぜそれが動作していないことができます。

おかげ

答えて

2

よく見ると、あなたが**演算子と関数の引数に渡すときに、辞書を開梱された第1の場合にはそれを見ることができます(あなたが鍵を渡している、名前付き引数として値のペア)後者の場合は関数に単一の引数を渡します。辞書

{'username': username, 'password': password, 'type': '', } 

そうした場合:

response = client.service.Login(**{'username': username, 'password': password, 'type': '', }) 

を**辞書を展開することができますので、それは

+0

おかげで動作するはず? – Sam

+0

正確に。単一の*でリスト(名前のない引数の場合)に対して同じことをすることができます。 –

関連する問題