python - 使用带有 urequests 的 **kwargs 的 Python '函数不接受关键字参数' 错误
问题描述
快速项目概述:我正在尝试使用 LoPy 为我的飞利浦 Hue 灯制作控制器。要从 Hue API 获取信息,我需要建立连接(有效)并将信息发送到 API,问题出在那部分。
由于 LoPy 不能使用 'requests' 库,我使用的是 'urequests' 库,用于发送请求的函数如下所示
请求.py
def head(url, **kwargs):
return request("HEAD", url, **kwargs)
def get(url, **kwargs):
return request("GET", url, **kwargs)
def post(url, **kwargs):
return request("POST", url, **kwargs)
def put(url, **kwargs):
return request("PUT", url, **kwargs)
def patch(url, **kwargs):
return request("PATCH", url, **kwargs)
def delete(url, **kwargs):
return request("DELETE", url, **kwargs)
使用这个库我正在使用“qhue”库来获取关于我的灯的信息,这可以使用以下函数:
qhue.py
def __call__(self, *args, **kwargs):
url = self.url
for a in args:
url += "/" + str(a)
http_method = kwargs.pop('http_method',
'get' if not kwargs else 'put').lower()
if http_method == 'put':
r = requests.put(url, data=json.dumps(kwargs, default=list), timeout=self.timeout)
elif http_method == 'post':
r = requests.post(url, data=json.dumps(kwargs, default=list), timeout=self.timeout)
elif http_method == 'delete':
r = requests.delete(url, timeout=self.timeout)
else:
r = requests.get(url, timeout=self.timeout)
if r.status_code != 200:
raise QhueException("Received response {c} from {u}".format(c=r.status_code, u=url))
resp = r.json()
if type(resp) == list:
errors = [m['error']['description'] for m in resp if 'error' in m]
if errors:
raise QhueException("\n".join(errors))
return resp
因此,当我请求灯的信息时,在 qhue.py 中调用了“else”,因此在 urequests.py 中调用了 get() 函数,但由于某种原因,我不断收到此错误:
Traceback(最近一次调用最后一次):文件“main.py”,第 279 行,文件“qhue.py”,第 39 行,调用类型错误 :函数不采用关键字参数
获取所有灯光的 main.py 代码(b = qhue.py 中的函数)
lights = b.lights # Creates a new Resource with its own URL
这个错误是如何发生的,我该如何解决?对我来说,似乎使用 **kwargs 将允许函数定义它自己的参数(如 timeout= 和 data=)
解决方案
推荐阅读
- python - 如何从python中的嵌套列表中提取和比较元素?
- java - SQLite Java:连接到加密数据库
- xml - xslt - 向所有匹配的 xml 子元素添加属性(不移动它们)
- node.js - Facebook 图形 API 批处理请求
- c++ - 在 MacOS 上写入串行端口时出现问题
- reflection - Kotlin 和使用 kotlin-reflect 对属性进行反射
- batch-file - 检查文件名是否包含子字符串
- javascript - 格式化文本使条件介于 2 个单词之间
- algorithm - 找到具有特定总和的数字对
- c++ - 位设置为浮点值或双精度值 C++