Suds 客户端在作为参数传递时不工作但与 kwargs 一起工作
Suds client not working when passing as parameters but works with kwargs
抱歉,这可能是个愚蠢的问题,但我对 python 不太熟悉。
在 suds 客户端上,如果我使用以下方法将参数传递给客户端方法调用:
kwargs = {'username': username, 'password': password, 'type': '', }
response = client.service.Login(**kwargs)
这很好用。但是如果我使用:
response = client.service.Login({'username': username, 'password': password, 'type': '', })
这行不通,有人可以解释一下区别以及为什么它行不通吗。
谢谢
如果仔细观察,您会发现在第一种情况下,当使用 **
运算符将字典传递给函数参数时,您正在解压字典(您将键值对作为命名参数传递)而在第二种情况下,您向函数传递了一个参数;字典
{'username': username, 'password': password, 'type': '', }
如果你这样做:
response = client.service.Login(**{'username': username, 'password': password, 'type': '', })
它应该有效
抱歉,这可能是个愚蠢的问题,但我对 python 不太熟悉。
在 suds 客户端上,如果我使用以下方法将参数传递给客户端方法调用:
kwargs = {'username': username, 'password': password, 'type': '', }
response = client.service.Login(**kwargs)
这很好用。但是如果我使用:
response = client.service.Login({'username': username, 'password': password, 'type': '', })
这行不通,有人可以解释一下区别以及为什么它行不通吗。
谢谢
如果仔细观察,您会发现在第一种情况下,当使用 **
运算符将字典传递给函数参数时,您正在解压字典(您将键值对作为命名参数传递)而在第二种情况下,您向函数传递了一个参数;字典
{'username': username, 'password': password, 'type': '', }
如果你这样做:
response = client.service.Login(**{'username': username, 'password': password, 'type': '', })
它应该有效