Python 我可以发送**kwargs来代替requests.post中的设置参数吗?

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

我正在尝试设置一个包含常见REST方法的基类,以便在稍后的测试框架中由更具体的方法使用。我决定不创建不同的
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
),将导致数据被“展开”到调用的参数列表中。

调用以展开字典时需要
**
,否则只需将其作为一个位置参数传递。