2017-03-19 8 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

당신이 자세히 보면 당신은 ** 연산자와 함수 인수로 전달 할 때 사전을 풀고 첫 번째 경우에 것을 볼 수있다 (당신이 키를 전달하는 명명 된 인수로 값 쌍) 두 번째 경우에는 함수에 단일 인수를 전달합니다. 사전

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

당신이 할 경우 : ** 사전이 압축 해제 할 수 있도록

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

그것이

+0

덕분에 일을해야합니까? – Sam

+0

정확하게. 하나의 *로 목록 (이름없는 인수의 경우)에 대해 동일한 작업을 수행 할 수 있습니다. –