我目前正在开发 API 包装器,并且在将参数从函数传递到请求的有效负载中时遇到问题。参数可以是 blockId、senderId、recipientId、limit、offset、orderBy。所有参数均通过“OR”连接。一个可能的解决方案可能是为每个组合都有 if 语句,但我认为这是一种糟糕的方法。 (请求和常量已导入)
def transactionsList(*args **kwargs):
if blockId not None:
payload = {'blockId': blockId}
if offset not None:
payload = {'offset': offset}
...
r = requests.get(constants.TRANSACTIONS_LIST, params=payload, timeout=constants.TIMEOUT)
return r
什么是(或)更优雅的方法来实现将函数参数传递给请求负载?
在修改了Pythonist的答案(这不起作用,因为总是有一个NameError)之后,我想出了这个解决方案:
def transactionsList(*args, **kwargs):
payload = {name: kwargs[name] for name in kwargs if kwargs[name] is not None}
r = requests.get(constants.TRANSACTIONS_LIST, params=payload, timeout=constants.TIMEOUT)
# print(r.url)
return r
如您所见,重要的部分是有效负载:
payload = {name: kwargs[name] for name in kwargs if kwargs[name] is not None}
只要 kwargs 数组中有一个参数(名称),并且它的值不是 None,它就会被添加到有效负载中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)