You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在函数中用*args/**kwargs灵活传入HTTP请求参数适配多场景?

灵活传递requests请求参数的解决方案

问题场景

你想封装一个make_some_request函数,让它能接收不同组合的HTTP请求参数,比如某次调用传url、headers和params,另一次传url和timeout,内部要正确对应requests.get的参数格式:

  • 第一次调用内部执行:requests.get(url, headers=headers, params=parameters)
  • 第二次调用内部执行:requests.get(url, timeout=timeout)

之前尝试单一*args或**kwargs都没满足需求,下面是解决方法:

解决方法:同时使用*args和**kwargs

调整函数定义,同时接收位置参数和关键字参数,直接透传给requests.get即可:

def make_some_request(self, *args, **kwargs):
    response = requests.get(*args, **kwargs)
    return response

调用示例

  1. 包含url、headers和params的调用:
# 传入url作为位置参数,headers和params作为关键字参数
self.make_some_request(url, headers=headers, params=parameters)

此时内部会自动映射为requests.get(url, headers=headers, params=parameters)。

  1. 包含url和timeout的调用:
# 传入url作为位置参数,timeout作为关键字参数
self.make_some_request(url, timeout=timeout)

此时内部会自动映射为requests.get(url, timeout=timeout)。

原理说明

  • *args用来接收requests.get要求的第一个位置参数(url),也可以兼容其他合法的位置参数;
  • **kwargs用来接收所有关键字参数(比如headers、params、timeout等);
  • 两者结合就能完美适配requests.get的所有参数组合,不管你是传位置参数还是关键字参数,都能正确透传。

内容的提问来源于stack exchange,提问作者JJH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 21:40:24