python - 避免必须显式包含函数参数

标签 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

最佳答案

在 python 请求的情况下,您可以通过执行以下操作使 SSL 验证标志在该 session 的生命周期内持续存在

s.verify = False

更一般地说,当函数接受 named=value 类型参数时,首先要做的是检查方法签名,看看默认值是否可能是您想要的。如果不是,下一步就是查看值是否像上面那样持久化(python requests 允许这样做)。

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

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

称为

my_get(s, url)

或者您可以变得雄心勃勃并且monkey patch来自图书馆的类(class)。但猴子修补有时会导致意想不到的副作用,因此除非万不得已,否则最好避免使用。

引用资料:
the documentation for the verify attribute of the Session class .
Using Optional and named arguments.

关于python - 避免必须显式包含函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44050692/

相关文章:

python - 使用python通过文件设置环境变量

python-3.x - 调度 Airflow TaskGroup抛出AttributeError

python - 如何正确使用 fillna() 作为 pandas 数据框中的日期时间列(不起作用)?

python - 如何在Python中对大量点进行反向地理编码?

python - VideoFileClip导入错误: "ImportError: No module named requests"

python - Python 中的类型对象

python - 重新运行单元格时,Jupyter notebook 速度极慢

python - 在绘图散点图中按下按钮时更新轴

python - 使用Python从数据库中提取

python - 使用 getattr 获取包含在描述符中的方法