Python 我可以发送**kwargs来代替requests.post中的设置参数吗?
我正在尝试设置一个包含常见REST方法的基类,以便在稍后的测试框架中由更具体的方法使用。我决定不创建不同的Python 我可以发送**kwargs来代替requests.post中的设置参数吗?,python,rest,python-requests,keyword-argument,Python,Rest,Python Requests,Keyword Argument,我正在尝试设置一个包含常见REST方法的基类,以便在稍后的测试框架中由更具体的方法使用。我决定不创建不同的request.post方法来对应于用户传入的数据、json或文件参数,而是创建一个具有url和header设置参数的方法,并让用户在**kwargs内传入任何他们想要的内容。但是,我不确定我是否可以在这个上下文中使用*kwargs,因为请求模块似乎需要一个位置参数。这就是我到目前为止所做的: class Action: def __init__(self, url, reques
request.post
方法来对应于用户传入的数据
、json
或文件
参数,而是创建一个具有url和header设置参数的方法,并让用户在**kwargs内传入任何他们想要的内容。但是,我不确定我是否可以在这个上下文中使用*kwargs,因为请求
模块似乎需要一个位置参数。这就是我到目前为止所做的:
class Action:
def __init__(self, url, requestHeaders, **kwargs):
self.url = url
self.requestHeaders = requestHeaders
self.kwargs = kwargs
def postAction(self):
response = requests.post(self.url, headers=self.requestHeaders, self.kwargs)
resultCode = response.status_code
resultMessage = response.text
print(resultCode)
print(resultMessage)
return resultCode,resultMessage
例如,kwargs
可能包含文件={'csv':('/path/to/csv.csv',open('csv.csv,'rb'),'text/csv')}
和验证=false
。在另一个请求中,文件
可能会替换为数据
。然而,当我尝试测试时,我最终得到了以下结果:
Traceback (most recent call last):
File "/home/user1/test/action.py", line 24
response = requests.post(self.url, headers=self.requestHeaders, self.kwargs)
SyntaxError: positional argument follows keyword argument
我想做的事可能吗?如果没有,是否有其他选择?如果希望将
kwargs
视为提供给post
的关键字参数,则需要使用**
应用它们:
response = requests.post(self.url, headers=self.requestHeaders, **self.kwargs)
这类似于序列解包(
*seq
),将导致数据被“展开”到调用的参数列表中。调用以展开字典时需要**
,否则只需将其作为一个位置参数传递。