动态调用带有可选参数的函数

时间:2017-09-27 14:02:58

标签: python-3.x python-requests

我需要在Python 3上使用Requests库处理大量请求。

我通过使用我自己的类来添加一个抽象级别,它将管理请求调用。

def requests(self, method, domain, url, parameters, token):
    if method == 'GET':
        r = Requests.get(domain + url, params=parameters, timeout=self.timeout)
    if method == 'POST':
        r = Requests.post(domain + url, params=parameters, timeout=self.timeout)

对于每种请求,我发现它非常冗长,知道如果有关于身份验证,特定标头等的话,我会添加其他请求。 (将其他args添加为auth=MyAuth(log, pwd),依此类推)

有没有办法动态调用函数?类似的东西:

d = dict()
d['parameters'] = parameters
d['token'] = token
r  = Requests.(method)(d)

问候。

1 个答案:

答案 0 :(得分:0)

正如@glibdud所说,你也可以在函数调用中使用**。

就我而言,使用getattr(Requests, method.lower())(domain + url, **args)就可以了。以args = {'params'=parameters,'timeout':self.timeout}为例。