避免必须明确包含函数参数

时间:2017-05-18 14:32:53

标签: python python-3.x

我的代码看起来像这样:

import requests
s = requests.Session()
r = s.get(a, verify=False)
r = s.get(b, verify=False)
r = s.get(c, verify=False)
r = s.get(d, verify=False)
r = s.get(e, verify=False)
r = s.get(f, verify=False)
r = s.get(g, headers={"a":"b"}, verify=False)
r = s.post(h, data={"a","b"},verify=False)

如何避免一直明确写verify=False

2 个答案:

答案 0 :(得分:7)

对于python请求,您可以通过执行

使SSL验证标志持续该会话的生命周期
s.verify = False

更常见的是,当函数接受named=value类型参数时,首先要做的是检查方法签名以查看默认值是否是您想要的值。如果不是下一件事就是看看该值是否如上所述(python requests允许这样做)。

第三个选项是创建一个简单的包装器,它为所有参数传递合适的值

def my_get(s, url):
    s.get(url, verify=False)

称为

my_get(s, url)

或者你可以从图书馆获得真正雄心勃勃的monkey patch课程。但猴子补丁有时会导致意想不到的副作用,所以除非作为最后的手段,否则最好避免使用。

参考文献:
 the documentation for the verify attribute of the Session class
 Using Optional and named arguments.

答案 1 :(得分:4)

可以使用partial

轻松完成
get_unverified = partial(s.get, verify=False)
post_unverified = partial(s.post, verify=False)
r = get_unverified(a)
r = get_unverified(b)
r = get_unverified(c)
r = get_unverified(d)
r = get_unverified(e)
r = get_unverified(f)
r = get_unverified(g, headers={"a":"b"})
r = post_unverified(h, data={"a","b"})